我正在Xamarin的iOS / Android解决方案中尝试使用SocketLite.PCL
,
但是我在运行时收到消息Allow Multiple Bind To Same Port only allowed on Windows
。
这是什么意思,我该如何解决?
编辑:
我正在使用的示例代码可以在以下位置找到:https://github.com/1iveowl/SocketLite.PCL
我将以下代码放入应用程序的rotected async override void OnStart(){}
中:
var udpReceived = new UdpSocketReceiver();
await udpReceived.StartListeningAsync(4992, allowMultipleBindToSamePort: true);
var udpMessageSubscriber = udpReceived.ObservableMessages.Subscribe(
msg =>
{
System.Console.WriteLine($"Remote adrres: {msg.RemoteAddress}");
System.Console.WriteLine($"Remote port: {msg.RemotePort}");
var str = System.Text.Encoding.UTF8.GetString(msg.ByteData);
System.Console.WriteLine($"Messsage: {str}");
},
ex =>
{
// Exceptions received here
}
);
编辑2:
好的,因此将
allowMultipleBindToSamePort
设置为false
可以停止该错误。现在,我收到错误
Address already in use
。但是,我仍然对
allowMultipleBindToSamePort
的用途感到好奇。 最佳答案
如您在new documentation中看到的:
重要说明:请注意,参数allowMultipleBindToSamePort仅在Windows上有效。在其他平台上,应将其设置为false
关于然而,我仍然对allowMultipleBindToSamePort的用途感到好奇。
关于this post的解释很好,您可以在以下的stackoverflow post中阅读更多内容