2012-01-11 4 views
0

c#でのネットワークの仕組みを知りたいので、TCPサーバーとクライアントの使用方法を学びました。 唯一の問題は、両方のコンピュータが同じネットワークに接続されている場合にのみ動作することです。LANでないc#でのネットワーク

どうしたら通信できますか?

+0

両方をインターネットに接続しますか? :) –

答えて

3

TCP/IPソケットは、それらの間にルートがある限り、任意の2つのエンドポイント間で動作する必要があります。それらの間にルートがない場合、2つの別々の切断されたネットワークが存在する場合について話しています。その場合は、2つのネットワークをブリッジするために何かが必要になります。

TCP/IPサーバー/クライアント通信を使用していて、コンピュータが別のネットワーク上にあり、それらが接続するルートがあり、通信できない場合は、ファイアウォール設定やその他のネットワーク設定を調べてTCP/IPパケットあるネットワークから他のネットワークに到達することができます。

クライアントがサーバーに接続しようとしたときに、正しいIPアドレスを使用していることを確認してください。 IPアドレスが10.0.0.5のサーバがポート4823でリッスンしている場合は、サーバIPアドレス10.0.0.5とポート4823を使用して、クライアントからそのIPアドレスにtelnet接続してみてください。通常、接続すると、 。

コマンドプロンプトから:telnet 10.0.0.5 4823

+1

まさに私が書こうとしていたもの。私はトムがドーナツに賭けるのは、サーバのエンドポイントでポート転送を設定し、プライベートIPの代わりにパブリックIPを使用することで、彼のプログラムが正常に動作することです。 –

+0

もう一つは、彼が正しい外部IPアドレスを指定していることを確認することです。 –

+0

OK、私は私のパブリックIPをここでチェックしました:www.mypublicip.com。 クライアントは次のように接続しています。 Client.Connect(IPAddress.Parse( "109.64.200.92")、8001); (IPは結果です) サーバーはまだ認識しません.. –

0

TCPでの通信はIPアドレスで行われます。したがって、クライアントとサーバが同じネットワーク上にない場合でも、サーバのIPアドレスを指定すると、クライアントはそのクライアントと通信することができます(もちろん、クライアントが常駐するネットワークが適切に設定され、サーバーのネットワークに到達する)。また、DNSサービスを使用して、IPアドレスではなくサーバーのFQDNを指定することもできます。クライアントネットワーク上のDNSサーバーは、サーバーのFQDNをIPアドレスに解決します。

関連する問題