我想将对象作为 UDP 数据包发送,然后在服务器上接收该对象。我已经弄清楚客户端,但我无法让服务器正确读取数据报。
客户代码:
public void sendMessage() {
ByteArrayOutputStream bStream = new ByteArrayOutputStream();
try {
ObjectOutput oo = new ObjectOutputStream(bStream);
oo.writeObject(asset);
// Send it
byte[] serializedMessage = bStream.toByteArray();
DatagramPacket sendPacket = new DatagramPacket(serializedMessage,
serializedMessage.length, ipAddress, sPort);
clientSocket.send(sendPacket);
oo.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
服务器尝试失败。
public void startServer() {
try {
serverSocket = new DatagramSocket(this.serverPort);
serverSocket.receive(new DatagramPacket()); /*Code fails here, I realise
* the constructor does not have input, but I can not figure out how to init
*a buffer whose size I do not know beforehand.
*/
this.threadPool.execute(new QueryTask(packet));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
我使用以下问题Sending Objects Across Network using UDP in Java来发送对象,但它没有显示他如何接收所述对象。
问题 2:一旦我收到并解析出数据包,是创建一个新线程更好,还是应该在 Datagrampacket 上使用 DatagramSocket 创建一个新线程?
提前致谢。