我試圖發回一個數據包給用戶,通知他們當前在服務器上的所有人,當他們發送一條消息到服務器上有「who」這個詞的時候。UDP在這裏丟失了我的數據包的一部分嗎?
這裏是我的代碼:
else if(response.contains("who"))
{
System.out.println("Size of names collection: "+names.size());
buf = null;
buf = names.toString().getBytes();
int thisPort = packet.getPort();
packet = new DatagramPacket(buf, buf.length,packet.getAddress(),thisPort);
socket.send(packet);
}
上面打印語句的輸出是2,表明有兩個人,例如安德魯和詹姆斯。現在,當我打包併發送它,我會期待它輸出這樣的:
[安德魯,詹姆斯]
但不是客戶端獲取:
[安德魯,
並且那它。有什麼問題? BTW我不得不使用UDP,這和不能切換到TCP
UPDATE
下面是客戶端類中接收的數據包的代碼:
while(true)
{
try
{
// Set the buf to 256 to receive data back from same address and port
buf = null;
buf = new byte[256];
packet = new DatagramPacket(buf, buf.length, address, 4445);
socket.receive(packet);
String response = new String(packet.getData());
// Receive the packet back
System.out.println(response);
}
catch(IOException e)
{
}
}
我想你剛剛發佈了一半你的問題 – Chirlo 2012-04-18 18:04:35
所以任何想法的人? – Katana24 2012-04-18 18:53:52
你是說這種事情總是發生,或者只是偶爾和隨意地發生? – 2012-04-18 18:57:45