2016-08-01 15 views
-2

私が扱っているTcpクライアント/サーバコードは、clientserverです。 タイトルのとおり、私はコンピュータ上でサーバコードを実行しています。クライアントコードを使用して別のデバイスからサーバコードに接続したいとします。私の質問は、私のクライアントコードはどのIPアドレスに接続する必要がありますか?私は多くの関連記事があることを知っていますが、解決策ではなく何が問題なのかについての情報しか得ていません。あるデバイスから別のデバイスのTcpサーバにTcpクライアントを接続する

+0

サーバが持つルーティング可能なIPアドレス。見つけられない場合は、サーバ上でコマンドプロンプトを開き、 'ipconfig'と入力してEnterキーを押します。ネットワークに慣れていない場合は、ファイアウォールが使用しているポートであれば、ファイアウォールが要求をブロックしていないことを確認するために、ファイアウォールの設定についても学びたいと思うでしょう。 – itsme86

+0

ipconfigの「ルーティング可能なIPアドレス」とは何ですか? IPv4、IPv6、サブネットマスク、およびデフォルトゲートウェイがあります... – Maydayfluffy

+0

クライアントがどのIPアドレスに到達できるか。おそらくIPv4アドレス。デバイスには1つのネットワークインターフェイスしかありませんか?通常は少なくともループバックもあります。ちょっとしたネットワークインターフェイス101のトレーニングをうまくやっているようです。このことについて読む。それについてのインターネットにはたくさんの資料があります。すべての一般的な理論であり、SOの質問には適していません。 – itsme86

答えて

1

これは、クライアント/サーバーアプリケーションを開発する際の一般的な問題です。典型的なホームネットワークには、複数のローカルIPアドレスと1つの外部IPアドレスがあります。外部からネットワークと通信するすべてのデバイスは、外部IPアドレスを使用する必要があります。しかし、クライアント/サーバアプリケーションを書くときに、接続先のアドレスとして外部IPアドレスを入力するだけであれば、これはうまく動作しません。

ポート転送を使用する必要があります。クライアントとサーバは特定のポートを介して通信し、ポート転送は、クライアントが外部IPアドレスに接続しているときにデータを送信するローカルIPアドレスをルータがどのように知っているかを示します。ルータ設定にログインし、ポート転送に関するセクションに移動して、サーバで使用しているポートを介した通信を、サーバが動作しているローカルIPアドレスにリダイレクトするように指定します。ルーターでこれらの設定を変更する方法は、使用しているルーターによって異なります。

サーバーを実行しているマシンのWindowsコマンドプロンプトでipconfigコマンドを実行します。結果からローカルIPv4アドレスを取得します。これは、クライアント/サーバーアプリケーションで使用されるポートをポート転送するときに使用するアドレスです。ルータの設定を適切に調整すれば、クライアントはあなたの外部IPアドレスをうまく使用できるはずです。

外部IPアドレスを見つけるには、http://www.whatsmyip.org/などの任意のWebサイトが正常に動作するはずです。

これらの問題をすべて回避し、ホームネットワーク上でアプリケーションをテストしたい場合は、サーバーが稼働しているマシンでipconfigコマンドを実行するときに見つかったローカルIPv4アドレスを使用します。これは、クライアントとサーバーの両方が同じネットワーク上で実行されている場合にのみ機能します。

+0

あなたが提案したように、私はクライアントとサーバーの両方が同じネットワーク上にあります。自分のラップトップ(サーバー)のローカルIPv4アドレスを使用していますので、クライアントはそのアドレスを理解できるはずです。しかし、私はこのエラーが発生します - WinRT情報:接続されたパーティーが一定期間後に正しく応答しなかったか、接続されたホストが応答できなかったため接続が失敗したため、接続できませんでした。私は、クライアントが現在どのサーバに到達するかを知っていることはかなり確信しています。サーバーからどのような応答が期待されますか? – Maydayfluffy

+0

@Maydayfluffy Hmm。これらのリンクから送信したコードを変更しましたか?これは、いくつかの異なることによって引き起こされる可能性があります。サーバがIPAddress ipAddress = ipHostInfo.AddressList [0];ここで取得したIPAddressを出力し、IPv4と異なる場合はそれを試してみてください。また、クライアントとサーバーの両方が同じポートに接続するように設定されていることを確認してください。それ以外にも、ファイアウォールの問題になる可能性があります。ポートが何か他のものによって使用されている可能性があります。そうしないと、ファイアウォールの設定によってポート上の接続がブロックされている可能 –

+0

ありがとうございます!それはファイアウォール問題になった。それを無効にするとすべてが機能しました。 – Maydayfluffy

関連する問題