1

ServerSocketはLAN接続をリッスンし、それらをうまく受け入れますが、3G接続を使用して電話から同じものに接続しようとすると、接続しないようです.

  1. getMyIPサイトを使用して を取得IPして接続しようとしましたが、正しく取得されますIP(ルーターで確認) が、接続がまったく受け入れられません。

  2. Windows 7とルーターでポートを完全に開いてみました。

  3. これらの行を Server コンストラクターに入れます。

    ss = new ServerSocket(port);
    host=ss.getInetAddress().getHostAddress();
    

    ホストのIPを0.0.0.0に取得します

ご協力いただきありがとうございます。

4

3 に答える 3

2

-にいる間LAN、 と を使用できPrivate IPますPublic IP ranges

-ただし、 を使用してInternet自分の場所にあるサーバーにアクセスする場合は、 static Public IP address.

-追加料金で ISP に依頼することができstatic Public IP addressます。動的 IP に基づいて静的 IP を提供するネット上のサイトもあります。

プライベート IP 範囲は、インターネット経由では使用できません。

Class A - 10.0.0.0 - 10.255.255.255  

Class B - 172.16.0.0 - 172.31.255.255

Class C - 192.168.0.0 - 192.168.255.255
于 2012-09-19T09:29:42.633 に答える
1

パブリックIPアドレスが必要です。ルーターを使用している場合は、インターネットに公開するポートのトラフィックをマシンに渡す必要があります。ファイアウォールがある場合は、このポートへの外部接続を許可する必要があります。

使用する言語に関係なく、行うすべての変更は同じであり、これらのことを行う必要があることを回避するためにJavaから実行できることは何もありません。

于 2012-09-19T09:31:40.143 に答える
0
  1. ファイアウォールが着信接続を許可しているかどうかを確認してください。そこで例外を作成する必要があります。
  2. ISP によってそのインスタンスに割り当てられたマシンの IP アドレスを明示的にバインドする必要があります。
  3. ipconfigWindows コマンド プロンプトでコマンドを実行すると、割り当てられた IP アドレスを取得できます。
  4. 次のコードを使用して、特定の IP アドレスにバインドします

    InetSocketAddress insa = new InetSocketAddress("22.23.23.111", 9090);       
    ServerSocket ss = new ServerSocket();
    ss.bind(insa);
    String host=ss.getInetAddress().getHostAddress();
    System.out.println(host);
    

これにより、割り当てられた IP アドレスが出力されます。

于 2012-09-19T09:41:52.570 に答える