2012-03-13 15 views
0

サーバーとクライアントプログラムを作成し、ネットワーク経由で通信する方法を示すチュートリアルがあります。リモートでコンピュータに接続する

http://www.win32developer.com/tutorial/winsock/winsock_tutorial_1.shtm

私はクライアントプログラムが私のローカルネットワーク上で、例えば、192.168.0.4への接続を行うことができます、と私はそれが74.125.225.96に接続することができます。しかし、74.125.225.96上のデフォルトサーバーではなく、74.125.225.96のネットワーク上で192.168.0.4と通信したいのであればどうでしょうか?私はGoogleで答えを見つけるのに苦労しています。

これを行う方法もありますか?そうでない場合、GnutellaとBittorrentはどのようにしてコンピュータを直接接続してファイルを共有できますか?

+1

確かにアルバートアインシュタインはそれを理解することができますか?相対性よりも難しくはありません... – Oded

+1

DNSの仕組みについて少し混乱していると思います。 www.example.com。のような「Aレコード」は特定のIPアドレスにバインドされています。そのDNSレコードは、そのIPバインディングを記録しているネットワークの内部的または外部的な知識がありません。これは、名前と「www.example.com」=「xxx.xxx.xxx.xxx」の間に1対1の関係があります。 –

+0

ああ、いいです。リモートIPアドレスも特定のローカルアドレスにバインドされていますか? –

答えて

1

74.125.225.96は、対象サーバポートのインバウンド接続を192.168.0.4を実行しているマシンに転送するように設定されたルータに割り当てる必要があります。

BitTorrentやその他のファイル共有アプリケーションは、NATトラバーサル、ホールパンチングなどのさまざまな手法を使用して、ルータやファイアウォールを介して接続します。たとえば、一方の当事者がルータ/ファイアウォールの後ろにあり、他方の当事者がそうでない場合、2つのアプリケーションは最初に一方向にお互いに接続しようとし、失敗した場合は逆の役割を果たします - クライアントはサーバになり、サーバはクライアントになります - そして彼らは再び試みます。それでも失敗すると、両者がアクセスできる中間サーバーに接続し、接続を委任できるようになります。