创建一个可以在两台计算机之间传递构建字符串的程序。
在挖掘和更改语法之后,我终于能够看到这个套接字异常:
System.Net.Sockets.SocketException (0x80004005): Only one usage of each socket address (protocol/network address/port) is normally permitted
at System.Net.Sockets.Socket.DoBind(EndPoint endPointSnapshot, SocketAddress socketAddress)
at System.Net.Sockets.Socket.Bind(EndPoint localEP)
at System.Net.Sockets.TcpListener.Start(Int32 backlog)
at System.Net.Sockets.TcpListener.Start()
at ChatProgFinal.chatForm.serverMode()
我正在使用的端口是11337.根据netstat,我没有使用该端口,所以我不确定我怎么可能抛出这个异常。
这是我的serverMode块:
Public Sub serverMode()
Try
Dim server As TcpListener = Nothing
server = New TcpListener(LocalIPEndPointAnyIP)
server.Start()
Dim incomingClient As TcpClient = server.AcceptTcpClient()
Do While isAlive = True And incomingClient.Connected = True
stream = incomingClient.GetStream()
If stream.CanRead Then
RaiseEvent DataReceived(stream)
End If
If incomingClient.Connected = False Then
RaiseEvent statusCheck("Disconnected")
isAlive = False
server.Stop()
End If
Loop
Catch e As Exception
RaiseEvent statusCheck(e.ToString)
Using outfile As New StreamWriter(docPath + "\log.txt")
outfile.Write(e.ToString)
End Using
Finally
stream.Close()
End Try
End Sub
感谢您对此提供的任何建议。 附带问题:我不确定如何测试/调试通过Visual Studio 2010在两台计算机之间进行通信的软件。我现在正在做的是发布它并部署到测试VM。有人可以使用任何其他方法吗?
答案 0 :(得分:0)
根据Hans的评论,你可能在整个程序的生命周期中不止一次地调用serverMode
。我注意到的一件事是,在finally
块中,您没有在服务器上调用.Stop
,这意味着可以在不关闭serverMode
的情况下退出{{1}}。一旦发生这种情况,重复调用启动服务器可能会失败。