62,636
社区成员




package udp;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
//可以使用双份该程序测试udp套接字
public class UDP0 {
public static void main(String[] args) throws IOException {
byte[] arr = new byte[128];
DatagramPacket p = new DatagramPacket(arr,128);
if(args[0].charAt(0) == 'r'){//read
DatagramSocket sock = new DatagramSocket(1111);
sock.receive(p);
String word = new String(p.getData());
System.out.println("From: "+p.getAddress()+" :Port"+p.getPort());//取出数据包中的地址和端口,执行结果端口号不一致
System.out.println(word);
sock.close();
}
else{//write
DatagramSocket sock = new DatagramSocket();
p.setAddress(InetAddress.getByName(args[1])); //地址端口封装在数据包中
p.setPort(1111); /// 我指定1111
sock.send(p);
sock.close();
}
}
}
如果存在安全管理器,则首先使用 port 参数作为参数调用其 checkListen 方法,以确保允许该操作。这可能会导致 SecurityException 异常。