VB.NET服务器没有收到来自远程客户端的连接请求
VB.NET服务器应用程序看不到网络上另一个客户端(即具有不同IP地址)的连接请求。但是,它确实看到来自与服务器在同一台计算机上运行的客户端应用程序的连接请求。
使用以下参数创建监听套接字
System.Net.Sockets.AddressFamily.InterNetwork
System.Net.Sockets.SocketType.Stream
System.Net.Sockets.ProtocolType.IP
我们已经尝试了上述方法,但没有成功。
侦听套接字绑定到的端点指定本地IP地址和特定的端口号。
等待连接的代码是教科书异步的:
thelistener.Listen(10)
thelistener.BeginAccept(New System.AsyncCallback(AddressOf targetofaccept), thelistener)
如果尝试连接的客户端与侦听器在同一台计算机上,则targetofaccept将成功运行。如果尝试连接的客户端在网络上的其他计算机上,则不会运行targetofaccept。
网络上的任何其他客户端(即,不仅是一个客户端)都会发生此行为。
考虑到存在防火墙问题,我们使用相同的地址和端口创建了VB6服务器和客户端。无论客户端系统是什么,VB6服务器都将接收连接请求。
据我们所知,客户端与服务器之间的通信没有其他问题。网络体系结构多年没有经过修改。
我们正在将代码作为VB.NET控制台应用程序进行调试。
有关如何诊断赞赏的任何提示。
答案 0 :(得分:0)
在调用Listen()
之前,您需要将侦听器套接字绑定到地址0.0.0.0
(在.NET IPAddress.Any
中),以便它侦听来自 any < / strong> IP地址。
这可以使用Socket.Bind()
method完成:
Dim listenerEndpoint As New IPEndPoint(IPAddress.Any, <your port>)
thelistener.Bind(listenerEndpoint)
thelistener.Listen(10)
答案 1 :(得分:0)
谢谢。
发出WAS防火墙。通过查找IDE(devenv.exe)的确切位置,在控制面板中打开“ Windows防火墙”,选择“允许程序或功能通过防火墙”,选择“允许另一个程序...”,浏览到确切位置进行修复并选择可执行文件,然后确保选中“家庭/工作(私人)”列中的“名称”。