android 示例中的 udp
udp in android example
我正在使用下面的代码在两个 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());
}
在此先感谢您的帮助
好的。您的故事中有很多未定义的变量。
首先,您应该在本地计算机上尝试此操作,您可以确定这不是网络问题。
其次,尝试将接收代码包装在一个死循环中,这将使调试更容易。
如果到现在为止,您发现您的代码实际上在本地主机上运行,
您应该检查设备上的网络配置,确保您使用的地址正确,并且两台设备都在同一网络中。
如果您的代码在本地主机上运行时遇到问题,请尝试在工作软件上独立测试您的服务器和客户端,例如 http://sourceforge.net/projects/sockettest/,这将允许您确保您的客户端和服务器代码正在运行
另外不要忘记时间,先启动接收器。
P.S。请正确格式化您的代码。
我正在使用下面的代码在两个 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());
}
在此先感谢您的帮助
好的。您的故事中有很多未定义的变量。 首先,您应该在本地计算机上尝试此操作,您可以确定这不是网络问题。 其次,尝试将接收代码包装在一个死循环中,这将使调试更容易。 如果到现在为止,您发现您的代码实际上在本地主机上运行, 您应该检查设备上的网络配置,确保您使用的地址正确,并且两台设备都在同一网络中。
如果您的代码在本地主机上运行时遇到问题,请尝试在工作软件上独立测试您的服务器和客户端,例如 http://sourceforge.net/projects/sockettest/,这将允许您确保您的客户端和服务器代码正在运行
另外不要忘记时间,先启动接收器。
P.S。请正确格式化您的代码。