1

Java でのソケット プログラミングについて少し時間をかけて学習し、ソケットを利用するいくつかの簡単なアプリを作成することができました。(インスタント メッセンジャー、三目並べ、基本的なこと) 私のプログラムでは、ServerSocket クラスと Socket クラスを使用してクライアント サーバー関係を使用しました。これまでのところ、すべてのゲームを同じマシンでテストしてきました。つまり、クライアントとサーバーの両方が同じマシンで実行され、使用しているソケット IP は 127.0.0.1 です。今度は同じロジックを使って LAN ゲームを作りたいと思います。1 台のコンピューターがサーバーになり、もう 1 台がクライアントになります。

私が聞きたかったのは、これが愚かな質問である場合はご容赦ください. つまり、あるコンピューターでソケットサーバーを実行し、別のコンピューターのソケットを最初のコンピューターの IP を使用して接続したいということです。たとえば、私のIPは「192.1.1.4」で、そのコンピューターに接続できるようにしたいとします。世界中の任意の 2 台のコンピューター間で、このような接続を確立することは可能ですか? 「lan」が「ローカル エリア ネットワーク」の略であることは知っていますが、それ以上のことはまったく知りません。申し訳ありませんが、それはばかげた質問であり、誰かが私を必要とする場合は明確にすることができます.

基本的に、Java プログラムを使用して 2 つのマシン間でソケット接続を確立できるようにするには、2 つのマシンでどのような基準を満たす必要がありますか?

4

4 に答える 4

5

以下の間で TCP/IP 接続を確立できます。

  • 同じ LAN 内の 2 台のマシン (プライベート IP)
  • パブリック IP (インターネット) を持つ 2 台のマシン
  • LAN 内のマシンとパブリック IP を持つマシン (LAN からパブリック IP への接続が開かれている場合)

特定のポートへの接続をそのマシンにリダイレクトするようにゲートウェイが構成されていない限り、LAN の外側から LAN の内側のマシンへの直接 TCP/IP 接続を開くことはできません。

于 2012-08-09T19:02:10.820 に答える
1

内部ネットワークでは、あなたが言ったことを実行します。クライアントは、指定されたポートでサーバーのIPアドレスまたはホスト名を使用してサーバーに接続します。

ファイアウォールと NAT が原因で、インターネット経由での接続は難しい場合があります。たとえば、ホーム ネットワーク上のコンピュータの IP アドレスは、おそらく "192.168.0.xxx" の行のどこかにありますが、http ://www.whatismyipaddress.com にアクセスすると、インターネットが ip住所が全然違います。表示されるのは、基本的にインターネット (WAN) 上のルーターの IP アドレスです。

したがって、基本的に、サーバーは自分のコンピューターへのゲームのポート用にルーターでポート転送をセットアップする必要があります。次に、接続用のインターネットに面した IP アドレスをクライアントに提供する必要があります。

于 2012-08-09T19:00:09.020 に答える
0

パブリック IP アドレスを使用でき、自分のアドレスを変更する必要はありません。これは、インターネットに接続するルーターによって処理されます。考慮しなければならないのは、ファイアウォールの設定です。ソケットで使用しているポートは、「許可」リストに追加する必要があります。通常、「確立された」トラフィックはデフォルトで許可されます。これは、受信ポート @ serverside がサーバーにアクセスできるようにする必要があることを意味します。

于 2012-08-10T09:07:03.513 に答える
0

接続を確立するための主な基準 (ファイアウォールの構成など、考えられる多数の要因を無視する) は、2 つのマシンが単に同じネットワーク上にあることですIP アドレスが 192.168. .常にローカル ネットワーク上のコンピュータを指します。これはあなたが質問している状況です。そのため、2 台のコンピュータがローカル ネットワークに接続されていて (ルーターなどを介して)、各マシンの IP アドレスがわかっている場合、実際にはこれまでと同じ方法で接続できます。実際、同じことがインターネットにも当てはまります。世界の異なる側に 2 台のマシンがセットアップされていて、それらの IP アドレスがわかっている場合でも (ここでも、潜在的により重大なファイアウォールの問題は無視します)、プロセスはまったく同じです。これこそまさに、特定の IP アドレスを持つマシンを見つけるプロセスがネットワーク スタックの下位層によって処理されるため、インターネットが非常にスケーラブルであることが証明された理由です。

tl;dr: 適切な IP アドレスを使用するだけで、既に行っていることと同じです。

于 2012-08-09T19:03:41.913 に答える