我有一个单独的C#
程序,它将数据发送到我在其中指定的任何IP地址。数据的编码方式是我可以再次对其进行解码(UTF-8
)并通过UDPClient
发送。我已经设置了这个程序来将数据发送到我机器上的一个端口,然后转发到Android Emulator
。在我的应用程序中,我在此端口上设置了一个DatagramSocket,但我的接收调用不会向我返回任何数据......
我确定数据已发送,当我在send语句上调试C#
程序时,我发现它实际上发送了数据...我怀疑它是我的Socket设置中的东西,但我不知道我不知道......
private void updateUDPSocket(String IpAddress, String IpPort){
Inet4Address ownIpAddress = null;
int ownIpPort = 0;
/*
* Try to recover the correct Inet4Address & Port.
* Catch all possible exceptions as well.
*/
try{
ownIpAddress = (Inet4Address) Inet4Address.getByName(IpAddress);
ownIpPort = Integer.parseInt(IpPort);
} catch (UnknownHostException uhe){
uhe.printStackTrace();
} catch (NumberFormatException nfe){
nfe.printStackTrace();
}
// Check to see if the current socket is already initialised.
if(mUDPSocket != null){
// If so, close & nullify it.
mUDPSocket.close();
mUDPSocket = null;
}
// Create a new socket & catch the possible exception.
try{
mUDPSocket = new DatagramSocket(ownIpPort, ownIpAddress);
mUDPSocket.setSoTimeout(TIME_OUT_IN_MILLIS);
} catch (SocketException se){
se.printStackTrace();
}
// Log current set address & port.
Log.d(TAG, "UDPSocket set to address:" +
mUDPSocket.getLocalAddress() + ":" + mUDPSocket.getLocalPort());
}
我在这里传递的IP地址是0.0.0.0
(在模拟器的情况下)或从WifiManager
恢复的IP地址(在移动设备的情况下)。
它在设置Socket时没有失败,但是每个人都使用错误的地址?
我从receive方法获得的唯一输出是接收超时的错误消息...
答案 0 :(得分:1)
我现在知道没有错,我现在已经在真实设备上测试了它,它将在Socket上接收数据......