标签:网络编程 java udp datagrampacket datagramsocket
网络传输方式一般有两种——TCP和UDP。本文用于简单了解一下UDP传输方式。
一、UDP有何特点?
1、面向无连接的;
2、面向报文的,且每一份报文不超过64KB;
3、不可靠但高效(不用建立连接);
4、支持一对一、一对多、多对一、多对多的交互通讯;
对于这些特点,没有什么为什么,事实而已啦!
二、在Java中怎么玩UDP?
在Java中,将建立UDP服务相关操作封装到了DatagramSocket类中,将数据报相关操作封装到了DatagramPacket类中。
三、具体玩的思路是什么?
UDP传输分为发送端和接收端。
发送端:
1、建立UDP服务;
2、指定数据,并将数据封装成数据报包;
3、将数据报包发送出去;
4、关闭服务资源。
接收端:
1、建立UDP服务,并监听某一个端口;
2、建立一个用于接收数据的数据包;
3、接收数据报包,并将数据包中的各种数据读取出来;
4、关闭资源。(可选)
四、把“驴”拉出来溜溜?
import java.net.*; class UdpSend { public static void main(String[] args) throws Exception { DatagramSocket ds = new DatagramSocket(); byte[] buf = "I am Kevin! Nice to meet you!".getBytes(); DatagramPacket dp = new DatagramPacket(buf, buf.length, InetAddress.getLocalHost(), 9090); ds.send(dp); ds.close(); } } class UdpRecv { public static void main(String[] args) throws Exception { DatagramSocket ds = new DatagramSocket(9090); byte[] buf = new byte[1024]; DatagramPacket dp = new DatagramPacket(buf, buf.length); ds.receive(dp); String ip = dp.getAddress().getHostAddress(); int port = dp.getPort(); String data = new String(dp.getData(), 0, dp.getLength()); System.out.println(ip + "--" + port + " : " + data); ds.close(); } }
五、再随便谈点?
参考API文档,可以看到DatagramPacket类有6个构造方法,如下:
可以发现,凡是用于接收数据包的构造方法都不带地址和端口的参数,凡是用于发送数据包的构造方法都必须指定地址和端口。这也很好理解,接收的只需要存储即可,而发送的必须要知道目的地才能发送出去。
标签:网络编程 java udp datagrampacket datagramsocket
原文地址:http://blog.csdn.net/liujian619/article/details/45510749