2

ソケット/クライアントについて質問があります。

C#でクライアントサーバープログラムを書き終えたところです。別のIPアドレスを持つコンピューターにどのように接続するのか疑問に思いました。たとえば、クライアントとサーバーを2つの異なるマシンで別々に実行したい場合、ループバック(またはローカルホストを使用)ではこれができません...。

ネットワークにあまり詳しくないので、助けていただければ幸いです。ループバックを処理するクライアント側のコードは次のとおりです。

TcpClient client = new TcpClient();

IPEndPoint serverEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8888);
4

3 に答える 3

5

サーバーのIPアドレスを知っている必要があり、それをクライアント側のコードで指定する必要があります。

ipconfig /allコマンドプロンプトで入力すると、IPを取得できます。これにより、ローカルネットワークへの接続のみが提供されることに注意してください。

インターネット経由でこれを行おうとしている場合は、WAN(ワイドエリアネットワーク)IPアドレスを見つけるサービスを使用する必要があります。これを行うための「標準」サービスがないため、これを行う方法をグーグルで検索できます。

ルーターを使用している場合は、サービスを実行しているマシンにポートを転送する必要があります。ネットワークアドレス変換を検索し、ルーターのドキュメントを確認するか、テクニカルサポートに連絡してください。またはグーグル「ポートを転送するにはどうすればよいですか?」

ネットワークをセットアップし、すべての接続情報を知ったら、次を使用していると仮定しますTcpListener

  • TcpListenerサーバー側では、を使用して設定するだけIpAddress.Anyです。まだ使用されていない任意のポート番号を指定します(8888)。
  • クライアント側で、サーバーのIPアドレスに接続します。IPAddress.Parse("127.0.0.1")および8888をサーバーのポートとアドレスに置き換えます。
于 2011-09-22T02:48:55.123 に答える
2

ipchickenのようなサードパーティのWebサイトがWANIPを提供するため、OverMarsのソリューションは適切ではありません。ローカル接続は機能しません。さらに情報が必要な場合は、NAT(ネットワークアドレス変換)を検索してください。

別のマシンを接続する場合は、「Any」アドレスにバインドするだけです。

TcpClient client = new TcpClient();
IPEndPoint serverEndPoint = new IPEndPoint(IPAddress.Any, 8888);

「Any」はアドレス「0.0.0.0」に変換されることに注意してください。

于 2011-09-22T02:48:20.207 に答える
2

127.0.0.1「このコンピュータ」またはアプリケーションが実行されているデバイスの内部アドレスです。最新のネットワークでは、各コンピューターに127.0.0.1と少なくとも1つの他のIPアドレスがあります。

ipconfig別のWindowsコンピューターのIPアドレスを確認するには、コマンドプロンプトから使用できます。次のようなものが表示されます。

WindowsIP構成

Ethernet adapter Local Area Connection:

        Connection-specific DNS Suffix  . :
        IP Address. . . . . . . . . . . . : 10.0.0.2
        Subnet Mask . . . . . . . . . . . : 255.255.255.0
        Default Gateway . . . . . . . . . : 10.0.0.1

この場合、10.0.0です。2は、他のコンピューターから接続するために使用できるIPアドレスです。そのようです:

TcpClient client = new TcpClient();
IPEndPoint serverEndPoint = new IPEndPoint(IPAddress.Parse("10.0.0.2"), 8888);  
client.Connect(serverEndPoint);

Windowsコンピュータには、コンストラクタまたはメソッドで使用できる、JimsPCまたはなどの名前もあります。JimsPC.abc.comTcpClientBeginConnectConnect

TcpClient client = new TcpClient("JimsPC", 8888);

また

TcpClient client = new TcpClient();
client.Connect("JimsPC", 8888);
于 2011-09-22T03:14:40.000 に答える