我使用以下代码在两个Android设备之间发送文本消息,但我无法在接收方侧收到数据包 发件人:
String messageStr="Hello Android!";
Log.d("note","message prepaered");
int server_port = 12345;
try{
Log.d("note","socket prepaered");
DatagramSocket s = new DatagramSocket();
Log.d("note","socket defined");
InetAddress local = InetAddress.getByName(ip.getText().toString());
int msg_length=messageStr.length();
byte[] message = messageStr.getBytes();
Log.d("note","converting message to bytes");
DatagramPacket p = new DatagramPacket(message, msg_length,local,server_port);
s.send(p);
Log.d("note","sending msg");}
catch (SocketException e){
Log.d("error",e.getMessage());
}
catch(IOException v1){
Log.d("error", v1.getMessage());
}
接收者:
String text;
int server_port = 12345;
byte[] message = new byte[1500];
try{
DatagramPacket p = new DatagramPacket(message, message.length);
Log.d("note","putting msg in packet");
DatagramSocket s = new DatagramSocket(server_port);
Log.d("note","defining socket");
s.receive(p);
Log.d("note","recieving packet");
text = new String(message, 0, p.getLength());
msg.setText(text);
s.close();
}
catch (SocketException e){
Log.d("error",e.getMessage());
}
catch(IOException v1){
Log.d("error", v1.getMessage());
}
提前感谢您的帮助
答案 0 :(得分:0)
确定。你的故事中有很多未定义的变量。 首先,您应该在本地计算机上尝试此操作,您可以确定这不是网络问题。 其次,尝试将接收代码包装在无限循环中,这将使调试更容易。 如果到现在为止,您发现您的代码实际上在本地主机上工作, 您应检查设备上的网络配置,确保使用正确的地址,并且两个设备都在同一网络中。
如果您无法在本地主机上运行代码,请尝试在工作软件上独立测试您的服务器和客户端,例如http://sourceforge.net/projects/sockettest/,它将允许您确保您的客户端和服务器代码正在运作
也不要忘记时间,先启动你的接收器。
P.S。请正确格式化您的代码。