Debian上Mono 3.2.8下的奇数套接字行为

时间:2016-11-14 22:20:30

标签: vb.net sockets mono

我在VS2015中编写VB.Net应用程序,它连接到套接字并侦听数据。它在Windows上完美运行,但当我尝试在Mono 3.2.8下运行时,我得到了一个不寻常的行为。

这是我的代码的简化版本。这适用于Windows:

Module Module1

    Sub Main()

        ' Declare client socket and client stream to get data from the dongle etc
        Dim clientSocket As New TcpClient()
        Dim clientStream As NetworkStream

        ' Connect to socket
        clientSocket.ExclusiveAddressUse = False
        clientSocket.LingerState.LingerTime = 0

        ' Try to connect to socket
        Try
            clientSocket.Connect("127.0.0.1", 30003)
        Catch ex As Exception
            ' write error
            Console.WriteLine("Exception: " & ex.ToString())
        End Try

        ' Tie server stream to socket
        clientStream = clientSocket.GetStream()

    End Sub

End Module

抛出的错误消息是:

未处理的例外情况: System.InvalidOperationException:已为此套接字调用绑定   在System.Net.Sockets.Socket.set_ExclusiveAddressUse(布尔值)[0x00000]中:0   在System.Net.Sockets.TcpClient.set_ExclusiveAddressUse(布尔值)[0x00000] in:0   在ConsoleApplication1.Module1.Main()[0x00000]中:0 [ERROR]致命的未处理异常:System.InvalidOperationException:已为此套接字调用绑定   在System.Net.Sockets.Socket.set_ExclusiveAddressUse(布尔值)[0x00000]中:0   在System.Net.Sockets.TcpClient.set_ExclusiveAddressUse(布尔值)[0x00000] in:0   在ConsoleApplication1.Module1.Main()[0x00000]中:0

由于我在指定IP地址和端口之前设置clientSocket.ExclusiveAddressUse = False,因此我无法理解它失败的原因。

在网上浏览一下,我可以看到2010年这是一个错误,但最近没有更多。我已经在3.2.8之后搜索了所有版本的发行说明,但没有提及所以看起来这仍然是一个bug?

如果是,是否有解决方法?

0 个答案:

没有答案