我正在尝试将SocketLite.PCL
与我的iOS / Android解决方案一起用于Xamarin,
但是在运行时我收到了消息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
用于什么感到好奇。
答案 0 :(得分:2)
正如您在new documentation中所看到的那样:
重要提示:请注意,参数allowMultipleBindToSamePort仅适用于Windows。在其他平台上,它应该设置为false
关于但是我仍然对使用allowMultipleBindToSamePort感到好奇。
this post有一个完整的解释,您可以在以下stackoverflow post
中阅读更多内容