您的位置:首页 > 理论基础 > 计算机网络

网络实现UDP协议连接

2018-01-10 09:17 302 查看
1 要想通过UDP协议来实现网络通信。则要使用DatagramSocket 和DatagramPacket来使用。

2 客户端创建一个DatagramSocket 和DatagramPacket。让DatagramPacket绑定数据和host和port。发送时通过DatagramSocket的send方法

如:DatagramSocket udpSocket=new DatagramSocket();
String value_c="client_data";
byte[] byte_c=value_c.getBytes();;
DatagramPacket packet=new DatagramPacket(byte_c,0,byte_c.length,InetAddress.getByName("127.0.0.1"),24520);
udpSocket.send(packet);

发送时。需要带上host对应的InetAddress和port。客户端的发送。通过DatagramSocket 的send方法。参数为DatagramPacket  。

3 客户端的接收。通过DatagramSocket 的receive方法。参数为DatagramPacket。

如:DatagramSocket udpSocket=new DatagramSocket();
byte[] byte_c_=new byte[1024];
DatagramPacket packet_=new DatagramPacket(byte_c_,0,byte_c_.length);
udpSocket.receive(packet_);
String value_c_=new String(byte_c_);

接收式。只需要DatagramPacket中设置字节数组的长度即可。

4 服务端的先接收。然后再发送给客户端。接收时。通过DatagramSocket 设置端口号需要和客户端发送时一致。

如:DatagramSocket udpSocket=new DatagramSocket(24520);
byte[] byte_s=new byte[1024];
DatagramPacket packet=new DatagramPacket(byte_s,0,byte_s.length);
udpSocket.receive(packet);
String value_s=new String(byte_s);
value_s=value_s.trim();//这里需要注意。需要通过trim函数来去除空格。

这就是服务端的接收。端口号需要和客户端一致。

5 服务端发送时。需要设置host对应的InetAddress和port。

如:DatagramSocket udpSocket=new DatagramSocket(24520);

byte[] byte_s_=value_s.getBytes();
String host=packet.getAddress().getHostName();
int port=packet.getPort();
System.out.println("host:"+host+"---port:"+port);
DatagramPacket packet_=new DatagramPacket(byte_s_,0,byte_s_.length,InetAddress.getByName(host),port);
udpSocket.send(packet_);

总结。记住UDP协议的连接通信。通过DatagramSocket 和DatagramPacket 

客户端DatagramSocket 构造函数为空。

服务段DatagramSocket 的构造函数为客户端的端口号。

无论客户端还是服务端。发送都需要host对应的InetAddress和port。

如:DatagramPacket packet_=new DatagramPacket(byte_s_,0,byte_s_.length,InetAddress.getByName(host),port);
udpSocket.send(packet_);

而接收只需要设置字节数组的相关信息即可。

记住:发送需要地址和端口。而接收不需要。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐