0
好,所以此刻我正在嘗試創建一個Android遊戲,我有一個線程運行,這很好。Android的UDP套接字 - 接收「垃圾」
但是我不確定如何確定傳入緩衝區大小以及如何讀取它。
目前,這是我的代碼:
if(!thisPlayer.isHost)
{
byte[] incMsg = new byte[64];
try {
socket = new DatagramSocket(port);
//socket.setSoTimeout(10);
DatagramPacket packet = new DatagramPacket(incMsg, incMsg.length);
socket.receive(packet);
Log.d("Receiving Game Message", "Received"+incMsg.toString());
} catch (UnknownHostException err) {
Log.e("", "", err);
} catch (Exception err) {
Log.e("", "", err);
}
testString = incMsg.toString();
} else {
byte[] msg = "Game On".getBytes();
try {
String compIP = "192.168.1.102";
String ip;
if(thisPlayer.ipAddress.equals(compIP))
ip = "192.168.1.107";
else
ip = compIP;
InetAddress sendingIP = InetAddress.getByName(ip);
socket = new DatagramSocket(port);
DatagramPacket p = new DatagramPacket(msg, msg.length, sendingIP, 5130);
socket.send(p);
Log.d("Sending Game Message", "Sent");
socket.close();
} catch (UnknownHostException err) {
Log.e("", "", err);
} catch (Exception err) {
Log.e("", "", err);
}
}
socket.close();
這類作品。主機正在發送數據。客戶端正在接收數據(我已經註釋掉了sotimeout,線程仍在繼續,所以我知道它的接收數據)。
我將字節[]轉換爲字符串,然後顯示它。然而,顯示的是「[B @ 448xxxx」,其中xxxx是一系列重複的數字/字母。
不幸的是,我到了沮喪的地步,現在頭腦發呆,無法想象我的生活出現了哪些問題。
TIA
p.s.我甚至嘗試使接收的字節數組與傳出的大小相同,但沒有任何運氣:/
感謝這工作。我改變了 - > testString = new String(packet.getData());並完全刪除incMsg。 – Olly 2011-03-16 21:13:59
@MByD是否有可能完全避免垃圾數據 – 2015-09-22 08:47:31