オブジェクトを 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();
}
}
次の質問を使用して、Java で UDP を使用してネットワーク経由でオブジェクトを送信しましたが、オブジェクトをどのように受信したかは示されませんでした。
質問 2: パケットを受信して解析したら、新しいスレッドを作成する方がよいですか、それとも、Datagrampacket を介して DatagramSocket を使用して新しいスレッドを作成する必要がありますか?
前もって感謝します。