コンピューターまたは他のプレイヤーと対戦できるゲームを開発しています。GUI は Swing ですが、問題には関係ありません。私の質問は次のとおりです。ネットワーク内の他のプレイヤーと接続するにはどうすればよいですか?
私はクライアント/サーバー、ソケットなどの用語に精通しており、基本的なクライアント/サーバー プログラムを作成できますが、1 台のコンピューターからしか実行できません。コンピューターからこのネットワークに接続する方法がわかりません。たとえば、全国の途中にあります。
コンピューターまたは他のプレイヤーと対戦できるゲームを開発しています。GUI は Swing ですが、問題には関係ありません。私の質問は次のとおりです。ネットワーク内の他のプレイヤーと接続するにはどうすればよいですか?
私はクライアント/サーバー、ソケットなどの用語に精通しており、基本的なクライアント/サーバー プログラムを作成できますが、1 台のコンピューターからしか実行できません。コンピューターからこのネットワークに接続する方法がわかりません。たとえば、全国の途中にあります。
あなたはおそらく、ローカル IP アドレスを他の世界から隠すルーターの背後に設定しています (詳細については、 NATを探してください)。基本的に、世界はあなたの YOUR_ROUTER_IP のみを認識し、ルーターはすべての IP パケットを外界からあなたに、またはその逆に運ぶように処理します。コンピューター/サーバーがルーターの IP アドレスを取得できるように、ルーターの設定を変更する必要があります。このようにして、単純なソケット操作を使用して、世界中のどこからでもサーバー アプリケーションにアクセスできます。これが役立つことを願っています。
私はネットワーク接続にKryonetを使用するのが好きです。これは非常にうまく機能し、非常に優れたドキュメントがあります。
クライアント ソケットとサーバー ソケットの使用方法を知っているとおっしゃっていたので、localhost (127.0.0.1) ではなく「実際の」IP アドレスで接続してみることをお勧めします。ローカル ネットワーク上の 2 台のマシンを使用して、「サーバー」マシンの IP アドレスを取得し、そのアドレスを使用してクライアントから接続します。
これは、ネットワーク アドレス変換 (NAT) ファイアウォールの背後にある可能性が高く、必要なポートを "開く" または "転送する" 必要があるという事実を除いて、世界中で機能します。NAT に関する詳細情報が必要な場合は、google と serverfault が非常に役立ちます。
クライアントとサーバーが同じマシンにある場合は、ループバック アドレス (つまり、127.0.0.1) を使用できます。LAN ではプライベート IP アドレスを使用できます。
Private ip address for LAN
クラス A - 10.xxx
クラス B - 172.16.0.0 - 172.31.255.255
クラス C - 192.168.0.0 - 192.168.255.255
LAN環境で使えます
インターネット経由で接続するには、 が必要Public ip addresses
です。すべての範囲のプライベート IP 以外のアドレスはパブリック アドレスです。
を持っているサーバーがある場合static ip
、クライアントがインターネットを介して世界中のどこからでもアクセスすることは問題になりません。
しかし、LAN を介してゲートウェイからインターネットにアクセスする場合は、 が存在するため、クライアントがサーバーにアクセスできるようにをNAT
に設定する必要があります。inbound and outbound traffic rules
gateway