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