[javaSE] 网络编程(UDP通信)

前端之家收集整理的这篇文章主要介绍了[javaSE] 网络编程(UDP通信)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

UDP发送端

获取DatagramSocket对象,new出来

获取DatagramPacket对象,new出来,构造参数:byte[]数组,int长度,InetAddress对象,int端口

调用DatagramSocket对象的send()方法,发送出去,参数:DatagramPacket对象

调用DatagramSocket对象的close()方法关闭资源

 

 

  1. import java.net.DatagramPacket;
  2. java.net.DatagramSocket;
  3. java.net.InetAddress;
  4. /**
  5. * 发送端
  6. * @author taoshihan
  7. *
  8. */
  9. public class Sender {
  10. static void main(String[] args) throws Exception {
  11. DatagramSocket ds=new DatagramSocket();
  12. byte[] buf="Hello UDP".getBytes();
  13. DatagramPacket p=new DatagramPacket(buf,buf.length,InetAddress.getLocalHost(),10000);
  14. ds.send(p);
  15. ds.close();
  16. }
  17. }

 

 

 

UDP接收端

获取DatagramSocket对象,new出来,构造参数:int端口号

获取DatagramPacket对象,new出来,构造参数:byte[]数组,int长度

调用DatagramSocket对象的receive()方法,接收数据,参数:DatagramPacket对象

调用DatagramPacket对象的getAddress()方法获取到InetAdress对象

调用DatagramPacket对象的getData()方法获取byte[]字节数组,接收的数据

调用DatagramPacket对象的getLength()方法获取到数据长度

 

通过new String()包一下,获得String数据,参数:byte[]数组,0开始,length长度

  1. * 接收端
  2. * Receiver {
  3. new DatagramSocket(10000);
  4. byte[] buf=new byte[1024];
  5. DatagramPacket datagramPacket= DatagramPacket(buf,buf.length);
  6. ds.receive(datagramPacket);
  7. InetAddress ip= datagramPacket.getAddress();
  8. int port=datagramPacket.getPort();
  9. byte[] resByte=datagramPacket.getData();
  10. int length=datagramPacket.getLength();
  11. String info=new String(resByte,0,length);
  12. System.out.println("来自:"+ip.getHostAddress()+":"+port+"说:"+info);
  13. }
  14. }

结果:

来自:100.66.217.80:56356说:Hello UDP

 

先运行接收端,此时程序会阻塞住,等待接收。。。

再运行发送端

接收到一次以后就会断,用while(true) 包一下,死循环但是会阻塞住,注意不要把创建DatagramSocket包进去

猜你在找的Java SE相关文章