java中进行udp通信时,提供了DatagramSocket这个类。
要发送数据时,只需要构造一个DatagramPacket,里面填充要发送的数据和发送的目的地和端口号。DatagramPacket有如下构造函数:DatagramPacket(byte[] buf, int offset, int length,InetAddress address, int port);
接收数据时,也只需要定义一个接收数据包而已,可以用DatagramPacket(byte[] buf, int length)构造函数;
下面是接收端的代码:
import java.io.IOException; import java.net.*; public class UdpReceive { public static void main(String args[]) { try { DatagramSocket s=new DatagramSocket(6002); //定义接收数据的缓冲区和长度 byte text[]=new byte[1024]; //用来接收数据的数据包 DatagramPacket p=new DatagramPacket(text,1024); //接收数据 s.receive(p); //显示接收到的数据 String a=new String(text,0,p.getLength()); System.out.println("接收到"+p.getAddress().getHostName()+"的消息"); System.out.print(a); //关闭套接口 s.close(); } catch (SocketException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }发送端的代码
import java.io.IOException; import java.net.*; public class UdpSend { public static void main(String args[]) { try { //构造套接字 DatagramSocket s=new DatagramSocket(); //构造数据报包 //DatagramPacket(byte[] buf, int offset, int length, InetAddress address, int port) String text="wo shi shizhan"; InetAddress ip=InetAddress.getByName("127.0.0.1"); DatagramPacket dp=new DatagramPacket(text.getBytes(),0,text.length(),ip,6002); //发送数据包 s.send(dp); //关闭套接口 s.close(); } catch (SocketException e) { e.printStackTrace(); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }