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

コードでは、127.0.0.1 ではなく 192.168.0.16 を指定する必要があります。

これは、localhost でリッスンするのではなく、外の世界に接続された IP アドレスでリッスンしたいためです。そのため、このコードは、クライアントに localhost に接続するように指示すると機能しますが、クライアントに WAN IP に接続するように指示し、接続が外部にルーティングされると機能しません。

于 2012-09-29T23:18:13.967 に答える