0

我编写了一个简单的 C++ 服务器/客户端聊天应用程序。我对能够让多个客户通过服务器(如聊天室)相互交谈很感兴趣。我希望它能够在互联网上工作,而不仅仅是在我的本地网络中。

我无法连接到服务器(服务器在我家的台式机上运行,​​它通过电线连接到调制解调器)。

服务器具有以下套接字地址设置:

addr.sin_addr.s_addr = inet_addr("127.0.0.1");
addr.sin_port        = htons(1234);
addr.sin_family      = AF_INET;

客户端具有以下套接字地址设置:

addr.sin_addr.s_addr = inet_addr("63.22.45.56");
addr.sin_port        = htons(1234);
addr.sin_family      = AF_INET;

我使用桌面的互联网 WAN IP 地址供客户端连接。我在路由器设置中为 TCP/UDP 转发了“1234”端口。它还指向我桌面的本地 IP 地址(192.168.0.16)

我不确定为什么它无法连接。请随时查看下面我的客户端和服务器代码。

https://dl.dropbox.com/u/12735155/chat_client.cpp (注意:这里的套接字地址是127.0.0.1,但忽略它。我已将其更新为63.22.45.56)

https://dl.dropbox.com/u/12735155/chat_server.cpp

4

1 回答 1

2

您应该在代码中指定 192.168.0.16 而不是 127.0.0.1。

这是因为你不想在 localhost 上监听,你想在连接到外部世界的 IP 地址上监听。这就是为什么当您告诉客户端连接到 localhost 时此代码将起作用,但如果您告诉客户端连接到您的 WAN IP 并且连接被路由到外部,它将不起作用。

于 2012-09-29T23:18:13.967 回答