0

私は、お互いにチャットしている両方のユーザーがお互いのサーバーとクライアントになるように設計しているアンドロイドベースのメッセンジャーを作りたいと思っています。パブリック IP ベースのルーターが 1 つあり、デバイスがローカル IP アドレスを持つ別のネットワークにあるデバイスへのアクセスには問題があります。パブリック IP デバイスにメッセージを送信できますが、パブリック インターフェイス ルーターを使用してローカル ネットワーク内にあるデバイスにアクセスできません。送信者 IP を言う: 130.190.93.68 ルーター IP は: 130.190.09.54 ルーター プライベート ネットワーク内の受信者の IP: 192.168.15.186

送信者は受信者との通信を望んでいます。ソケットプログラミングを使用してそれを実現するにはどうすればよいですか。

コメントからコードを編集:

public class SocketClient extends Activity {
    private Socket socket;
    private String serverIpAddress = "192.168.15.186";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        bt = (Button) findViewById(R.id.myButton);
        tv = (TextView) findViewById(R.id.myTextView);

        InetAddress serverAddr = InetAddress.getByName(serverIpAddress);
        socket = new Socket(serverAddr, 5000);
4

1 に答える 1

0

1つの解決策は、ユーザーがサインインする必要がある中央サーバーを用意することです。ユーザーが他のユーザーとチャットしたい場合、クライアントの1つがプライベートネットワーク上にあり、もう1つがプライベートネットワーク上にない場合、プライベートネットワーク上のクライアントはパブリックネットワーク上のクライアントのアドレスであり、チャットセッションを開始します。

両方のクライアントがプライベートネットワーク上にある場合は、サーバーを経由する必要があります。どのクライアントもプライベートネットワーク上にない場合、サーバーは、接続を開始するクライアントをどのクライアントにするかをランダムに決定します。

于 2012-11-10T12:20:24.160 に答える