【发布时间】:2016-10-18 23:19:07
【问题描述】:
我有一个示例代码如下,套接字绑定到 IP 10.10.88.11 和端口 9876。我用下面的 Wireshark 测试了 2 个条件。两台 PC 在同一个子网中。
- 从同一台电脑 (10.10.88.11) 发送 UDP 数据包 - UDP 服务器能够接收
- 从另一台电脑 (10.10.88.10) 发送 UDP 数据包 - UDP 服务器无法接收,但 Wireshark(在 10.10.88.11)能够捕获数据包
我已经搜索了互联网,但找不到解决方案。在创建 InetScoketAddress 时我做错了什么吗?
import java.io.*;
import java.net.*;
public class UDPServer {
public static void main(String args[]) throws Exception {
InetSocketAddress address = new InetSocketAddress("10.10.88.11", 9876);
DatagramSocket serverSocket = new DatagramSocket(address);
byte[] receiveData = new byte[1024];
byte[] sendData = new byte[1024];
while(true)
{
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
System.out.println("Waiting to receive");
serverSocket.receive(receivePacket);
String sentence = new String( receivePacket.getData());
System.out.println("RECEIVED: " + sentence);
InetAddress IPAddress = receivePacket.getAddress();
int port = receivePacket.getPort();
String capitalizedSentence = sentence.toUpperCase();
sendData = capitalizedSentence.getBytes();
DatagramPacket sendPacket =
new DatagramPacket(sendData, sendData.length, IPAddress, port);
serverSocket.send(sendPacket);
}
}
}
【问题讨论】: