繁体   English   中英

客户端无法通过Internet连接到服务器

[英]Client does not connect to server over internet

我已经建立了一个简单的客户端/服务器系统,但是由于某种原因,客户端无法通过Internet连接。 我让他们使用本地主机地址(127.0.0.1)和我的LAN IP地址(192.168.2.2)在同一台计算机上进行通信。

我还确认使用http://www.whatsmyip.org/ports/来打开该端口,并且当我使用此站点时,在服务器上触发了回调函数,因此我认为服务器可以正常工作。

但是,当我尝试从客户端连接到相同的(互联网)IP地址/端口时,服务器未检测到任何内容,并且客户端在OnConnect回调中引发异常。 我注意到BeginConnect语句未正确设置clientSocket的RemoteEndPoint属性-当我查看它时,它抛出SocketException(10057)。 (通过LAN地址连接时,它可以正常工作。)

private void ConnectToServer()
{
    clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
    IPAddress ipAddress = IPAddress.Parse(txtIPAddress.Text);

    IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, Convert.ToInt32(txtPort.Text));
    clientSocket.BeginConnect(ipEndPoint, new AsyncCallback(OnConnect), null);
}

考虑到客户端可以通过LAN IP地址连接并且服务器正在接受Internet上的连接,该如何阻止客户端通过外部IP地址连接到服务器?

我正在使用Windows 7和.NET 3.0。

任何建议表示感谢。 谢谢。

首先,您不应该期望在调用BeginConnect之后立即连接套接字。 通常需要几次往返来建立连接。 因此,在建立连接之前询问远程端点时,将出现错误代码10057 Not Connected

至于为什么您的网络设置不起作用。 如果我正确理解您的设置,则您尝试通过以下方式发送数据包:

Your machine (LAN) --> Port-forwarding device (WAN) --> Your machine (LAN)

您是否已验证端口转发设备支持此设置?

您声明已验证以下内容:

Remote machine (WAN) --> Port-forwarding device (WAN) --> Your machine (LAN)

您的端口转发设备可能不支持LAN -> WAN -> LAN端口转发。

您可能还想使用Wireshark查看发送了什么数据包。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM