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