简单的UDP通信
2016-04-14 10:05
375 查看
JAVA中以两个类来支持UDP通信:
这两个类代表了UDP通信中的数据包和套接字。所以,使用UDP通信也非常简单,简单归纳成三步,就是创建数据包、创建套接字、用套接字发送/接受数据包。
发送数据包的时候,一般需要知道远程主机的地址和端口,所以使用DatagramPacket的四参构造函数较为方便:
前两个参数用来指定发送的字节数组及长度,后两个参数用来指定IP地址及端口号。
一个简单的代码段如下:
2.创建套接字绑定到本地端口
由于我们并不关心使用哪个端口发送,所以可以使用DatagramSocket的无参构造函数,这样它会任选一个空闲的端口绑定:
3.发送数据包
UDP是无连接的协议,所以直接使用DatagramSocket 的send方法发送数据包:
创建数据包只是为了接收数据,并不需要指定IP地址和端口,所以可以使用2参的构造函数:
参数分别代表接收字符缓冲区及其大小。
一个简单的代码段如下:
2.创建套接字绑定到本地端口
由于 发送端需要知道接收端的端口号,所以在创建套接字的时候需要绑定到一个固定的端口上:
3.接收数据包
接收UDP数据包的时候使用DatagramSocket的receive方法:
注意,
代码段如下:
java.net.DatagramPacket
java.net.DatagramSocket
这两个类代表了UDP通信中的数据包和套接字。所以,使用UDP通信也非常简单,简单归纳成三步,就是创建数据包、创建套接字、用套接字发送/接受数据包。
发送UDP数据包
1.创建数据包发送数据包的时候,一般需要知道远程主机的地址和端口,所以使用DatagramPacket的四参构造函数较为方便:
public DatagramPacket(byte[] buf, int length, InetAddress address, int port)
前两个参数用来指定发送的字节数组及长度,后两个参数用来指定IP地址及端口号。
一个简单的代码段如下:
byte[] buff = "What time is it?".getBytes(); DatagramPacket dp = new DatagramPacket(buff, buff.length, addr, port);
2.创建套接字绑定到本地端口
由于我们并不关心使用哪个端口发送,所以可以使用DatagramSocket的无参构造函数,这样它会任选一个空闲的端口绑定:
DatagramSocket ds = new DatagramSocket();
3.发送数据包
UDP是无连接的协议,所以直接使用DatagramSocket 的send方法发送数据包:
ds.send(dp);
接收UDP数据包
1.创建数据包创建数据包只是为了接收数据,并不需要指定IP地址和端口,所以可以使用2参的构造函数:
DatagramPacket(byte[] buf, int length)
参数分别代表接收字符缓冲区及其大小。
一个简单的代码段如下:
byte[] buffres = new byte[1024]; DatagramPacket dprec = new DatagramPacket(buffres, buffres.length);
2.创建套接字绑定到本地端口
由于 发送端需要知道接收端的端口号,所以在创建套接字的时候需要绑定到一个固定的端口上:
DatagramSocket ds = new DatagramSocket(8888);
3.接收数据包
接收UDP数据包的时候使用DatagramSocket的receive方法:
ds.receive(dp);
注意,
receive()是一个阻塞的方法,可以使用
setSoTimeout()方法设置超时时间,也可以创建一个新的线程。
代码段如下:
ds.setSoTimeout(2000); ds.receive(dprec);
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树