我有一个客户端/服务器风格的应用程序,使用WCF进行通信,这一切都很好。应用程序的一个功能是从客户机上获取文件到服务器上(中央控制)。如何将TCPListener绑定到外部IP地址?
Central Control请求客户端上指定文件夹中的文件列表,并使用套接字打开端口,以便客户端连接并传输每个文件。它为每个文件使用不同的端口号。
当在本地进行测试但在部署到我们的客户环境时,此工作正常,我开始得到以下异常。
The requested address is not valid in its context
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 AMIGA.Library.TransferFile.listenerThread()
终点的IP地址是10. 。。*地址。我搜索了一个答案,普遍的共识是,tcpListener不能绑定到外部IP地址。我没有想到一个10. 。。*地址是外部的。
抛出异常的代码如下:
tcpListener = New TcpListener(IEndPoint)
Dim handlerSocket As Socket
Dim thdHandler As Thread
tcpListener.Start()
RequestFile()
有没有办法,我可以使用的TcpListener这份工作?如果不存在,还有什么替代方案,实施替代方案会有多容易。
请记住,我们无法直接访问防火墙配置,更改可能需要几周时间才能实施。
“外部”的定义根据上下文的不同而有很大的不同......但您是对的,10.0.0.1/8被指定为私有子网。 – 2009-06-10 12:47:48