UDP发送端@H_502_3@
获取DatagramSocket@H_502_3@对象,@H_502_3@new@H_502_3@出来@H_502_3@
获取DatagramPacket@H_502_3@对象,@H_502_3@new@H_502_3@出来,构造参数:@H_502_3@byte[]@H_502_3@数组,@H_502_3@int@H_502_3@长度,@H_502_3@InetAddress@H_502_3@对象,@H_502_3@int@H_502_3@端口@H_502_3@
调用DatagramSocket@H_502_3@对象的@H_502_3@send()@H_502_3@方法,发送出去,参数:@H_502_3@DatagramPacket@H_502_3@对象@H_502_3@
调用DatagramSocket@H_502_3@对象的@H_502_3@close()@H_502_3@方法,关闭资源@H_502_3@
- import@H_502_3@ java.net.DatagramPacket;
- @H_502_3@ java.net.DatagramSocket;
- @H_502_3@ java.net.InetAddress;
- @H_502_3@/**@H_502_3@
- * 发送端
- * @H_502_3@@author@H_502_3@ taoshihan
- *
- @H_502_3@*/@H_502_3@
- public@H_502_3@ class@H_502_3@ Sender {
- @H_502_3@static@H_502_3@ void@H_502_3@ main(String[] args) throws@H_502_3@ Exception {
- DatagramSocket ds@H_502_3@=new@H_502_3@ DatagramSocket();
- @H_502_3@byte@H_502_3@[] buf="Hello UDP".getBytes();
- DatagramPacket p@H_502_3@=new@H_502_3@ DatagramPacket(buf,buf.length,InetAddress.getLocalHost(),10000);
- ds.send(p);
- ds.close();
- }
- }@H_502_3@
UDP接收端
获取DatagramSocket对象,new出来,构造参数:int端口号
获取DatagramPacket对象,new出来,构造参数:byte[]数组,int长度
调用DatagramSocket对象的receive()方法,接收数据,参数:DatagramPacket对象
调用DatagramPacket对象的getAddress()方法,获取到InetAdress对象
调用DatagramPacket@H_502_3@对象的@H_502_3@getData()@H_502_3@方法,获取到@H_502_3@byte[]@H_502_3@字节数组,接收的数据@H_502_3@
调用DatagramPacket@H_502_3@对象的@H_502_3@getLength()@H_502_3@方法,获取到数据长度@H_502_3@
通过new String()@H_502_3@包一下,获得@H_502_3@String@H_502_3@数据,参数:@H_502_3@byte[]@H_502_3@数组,@H_502_3@0@H_502_3@开始,@H_502_3@length@H_502_3@长度@H_502_3@
- * 接收端
- * @H_502_3@ Receiver {
- @H_502_3@new@H_502_3@ DatagramSocket(10000);
- @H_502_3@byte@H_502_3@[] buf=new@H_502_3@ byte@H_502_3@[1024];
- DatagramPacket datagramPacket@H_502_3@= DatagramPacket(buf,buf.length);
- ds.receive(datagramPacket);
- InetAddress ip@H_502_3@= datagramPacket.getAddress();
- @H_502_3@int@H_502_3@ port=datagramPacket.getPort();
- @H_502_3@byte@H_502_3@[] resByte=datagramPacket.getData();
- @H_502_3@int@H_502_3@ length=datagramPacket.getLength();
- String info@H_502_3@=new@H_502_3@ String(resByte,0,length);
- System.out.println(@H_502_3@"来自:"+ip.getHostAddress()+":"+port+"说:"+info);
- }
- }@H_502_3@
结果:
来自:100.66.217.80:56356说:Hello UDP
先运行接收端,此时程序会阻塞住,等待接收。。。
再运行发送端
接收到一次以后就会断,用while(true) @H_502_3@包一下,死循环但是会阻塞住,注意不要把创建@H_502_3@DatagramSocket@H_502_3@包进去@H_502_3@