使用下面的代码,我在MonoDroid模拟器下没有收到任何UDP数据报 . 但是相同的代码在MonoTouch下运行良好......
好的,我知道没有保证同一段代码在不同平台上的工作方式类似 . 但最终,我希望在iOS和Android上使用C# .
System.Threading.Thread udpListener = new System.Threading.Thread(() =>
{
System.Net.Sockets.UdpClient udpClient = new System.Net.Sockets.UdpClient(UDP_PORT);
while (true)
{
try
{
System.Net.IPEndPoint sender = new System.Net.IPEndPoint(System.Net.IPAddress.Any, 0);
byte[] bytes = udpClient.Receive(ref sender);
using (System.IO.MemoryStream ms = new System.IO.MemoryStream(bytes))
{
System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(typeof(MyMessageList));
MyMessageList messages = serializer.Deserialize(ms) as MyMessageList;
if (messages != null) ParseNotificationMessages(messages);
}
}
catch (System.Exception exp)
{
}
}
});
udpListener.IsBackground = true;
udpListener.Start();
干杯,帕特里克
2 回答
不确定它是否适用于monodroid,但对于使用UDP的一般android测试,你应该检查答案:How to receive data using UDP in Android?
希望这可以帮助 .
奇; UDP应该可以工作,因为这是我们的测试之一:
现在,上面的代码使用环回设备而不是“真正的”设备,但我希望/期望它能够工作......
您想从哪个端口读取? Android确实使用Linux内核,因此只有授权用户才能访问小于1024的端口 .
另一种可能性是您错过了
android.permission.INTERNET
权限,这是所有与网络相关的操作所必需的 .