Xamarin说“允许在Windows上允许多个绑定到同一端口”。我该怎么办?

时间:2017-07-23 19:12:33

标签: c# ios sockets xamarin udp

我正在尝试将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用于什么感到好奇。

1 个答案:

答案 0 :(得分:2)

正如您在new documentation中所看到的那样:

  

重要提示:请注意,参数allowMultipleBindToSamePort仅适用于Windows。在其他平台上,它应该设置为false

关于但是我仍然对使用allowMultipleBindToSamePort感到好奇。

this post有一个完整的解释,您可以在以下stackoverflow post

中阅读更多内容