首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >客户端不能通过互联网连接到服务器

问客户端不能通过互联网连接到服务器
EN

Stack Overflow用户
提问于 2011-08-29 15:35:01
回答 1查看 824关注 0票数 0

我设置了一个简单的客户机/服务器系统,但是由于某些原因,客户机不能通过互联网连接。我让它们在同一台机器上通信,使用本地主机地址(127.0.0.1)和我的LAN IP地址(192.168.2.2)。

我还使用http://www.whatsmyip.org/ports/确认了端口是打开的,并且当我使用这个站点时,回调函数在服务器上触发,所以我假设服务器工作正常。

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

代码语言:javascript
复制
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地址连接到服务器?

我使用的是Windows7和.NET 3.0。

任何建议都将不胜感激。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-29 16:03:00

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

您的网络设置无法工作的原因。如果我正确理解了您的设置,您正在尝试以以下方式发送数据包:

代码语言:javascript
复制
Your machine (LAN) --> Port-forwarding device (WAN) --> Your machine (LAN)

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

您声明您已验证以下内容:

代码语言:javascript
复制
Remote machine (WAN) --> Port-forwarding device (WAN) --> Your machine (LAN)

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7227350

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档