0

私は現在、TCP/IP 接続を使用してアプリケーションを構築しており、アプリは mysql データベースから IP アドレスを照会してサーバーとクライアント間の接続を確立しています。しかし、あるとしましょう

ネットワーク NET_A (220.241.XXX.XXX) に接続されている人物 A と B

ネットワーク NET_B (221.221.xxx.xxx) に接続されている人 C と D

また、A と D を何らかの IP アドレスを使用して接続し、B と C を相互に接続する場合、それらの人々が相互に正常に接続できるようにするには、どのような種類の IP アドレスまたは方法を使用する必要がありますか? ? 次のコードを使用して達成されたローカル IPv4 アドレスを使用して、ネットワーク NET_A で A と B を正常に接続しました。

InetAddress thisIp =InetAddress.getLocalHost();
System.out.println("IP:"+thisIp.getHostAddress());

また、次はserversocketコードです。

   ServerSocket ss = new ServerSocket(PORT);
   ss.setSoTimeout(10000);
   connection = ss.accept();

以下はクライアントソケットコードです:

connection = new Socket(InetAddress.getByName(SERVER_IP), PORT);
4

1 に答える 1

0

両方のネットワークで IP を使用してルーターをセットアップし、すべてのホストにルートを追加して、リモート ネットワークとルーター (ゲートウェイ) の IP アドレスを伝える必要があります。

パケット転送を有効にすることで、これを簡単に行うように Linux マシンをセットアップできます。に追加net.ipv4.ip_forward = 1/etc/sysctl.confて実行するだけsudo sysctl -p

通常、ソケット プログラマのルーティングは気にする必要がないため、自動的に行われます。

于 2012-06-30T16:19:58.790 に答える