我正在尝试使用Java中的DatagramPacket
和DatagramSocket
类接收一个简单的字符串。
这是我的代码:
public static void main(String [] args){
DatagramSocket aSocket = null;
try{
aSocket= new DatagramSocket();
String aMessage = "my message";
System.out.println("1");
byte [] m = aMessage.getBytes();
InetAddress aHost = InetAddress.getByName("localhost");
int serverPort = 6789;
DatagramPacket request = new DatagramPacket(m,aMessage.length(),aHost,serverPort);
System.out.println("2");
aSocket.send(request);
System.out.println("3");
byte [] buffer = new byte[1000];
System.out.println("4");
DatagramPacket reply = new DatagramPacket(buffer,buffer.length);
aSocket.receive(reply);
System.out.println("5");
System.out.println("DATA RECEIVED" + reply.getData());
aSocket.close();
}
catch(SocketException ex){
ex.printStackTrace();
}
catch(IOException ioe){
ioe.printStackTrace();
}
}
它不打印接收的数据。我已经System.out.println
只是为了查看代码执行的位置,它停在4,它不打印5,这意味着问题就在4以下。为什么我没有收到数据,任何人都可以帮助我好吗?
答案 0 :(得分:3)
@avi不要使用相同的数据报套接字来获取依赖。要获得回复,您必须提到服务器数据报socket.use
的端口名称DatagramSocket datagramSocket = new DatagramSocket(6789);// Which is given by you only
然后使用datagramSocket.receive(reply);
以及获取地址使用此方法
InetAddress aHost = InetAddress.getLocalHost();
而不是
InetAddress aHost = InetAddress.getByName("localhost");
参考此链接