使用以下代码,我在 MonoDroid + Simulator 下没有收到任何 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();
干杯,帕特里克