我在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?
如果是,是否有解决方法?