2017-05-18 6 views
0

GET/POST HTMLリクエストを取得するために、自分のPCでサーバーを起動したいと考えています。GET/POST HTTPリクエストを取得するJavaサーバー

これは私が使用するJavaコードです:

import java.awt.Toolkit; 
    import java.io.BufferedReader; 
    import java.io.InputStreamReader; 
    import java.net.ServerSocket; 
    import java.net.Socket; 
    import java.sql.Date; 
    import java.text.SimpleDateFormat; 

    public class SimpleHTTPServer { 

     public static void main(String args[]) throws Exception { 

      final ServerSocket server = new ServerSocket(4000); 
      int number_req = 0; 

      System.out.println("Listening for connection on port 4000 ...."); 
      while (true) { 

       final Socket client = server.accept(); // Accepting connection 
       InputStreamReader isr = new InputStreamReader(client.getInputStream()); 
       BufferedReader reader = new BufferedReader(isr); 
       String line = reader.readLine(); 
       while (!line.isEmpty()) { 
        System.out.println(line); 
        line = reader.readLine(); 
       } 

       // print number of request, date and time 
       Toolkit.getDefaultToolkit().beep(); 
       SimpleDateFormat formatTime = new SimpleDateFormat ("E dd.MM.yyyy 'at' hh:mm:ss a"); 
       Date date = new Date(System.currentTimeMillis()); 
       System.out.println("Number of requests: " + number_req + " \n\tin "+ formatTime.format(date)); 
      } 
     } 
    } 

私は私のIPに私のブラウザのWebからHTML要求を送信しようとした。このようなポート:

http://79.49.72.102:4000 

が、私はいつもERR_CONNECTION_REFUSEDを取得。 localhost:4000で試してみましたが、リクエストを受け取りました。 ルーターでNo-IPと設定済みのポート転送を使用しましたが、何も動作していないようです。

私は何をしましたか?

+0

httpプロトコルについて何かお読みになりましたか? –

+0

もう1つの問題は、JavaがネットワークのIPアドレスにバインドされることです。この投稿は役立ちますhttp://stackoverflow.com/questions/32362627/force-rmiservice-to-bind-with-specific-ip-address –

答えて

0

サーバー79.49.72.102は、HTTPを使用してポート4000で接続することを許可していないため、接続は拒否されます。これは、サーバー上のファイアウォールを介して実装される一般的なセキュリティ対策です。

誰が79.49.72.102を所有していますか? パブリックアドレスのように見えるので、4000などの非標準ポートでランダムに着信接続を受け付けません。

+0

アドレス79.49.72.102は私のネットワークの例のアドレスです。 –

+0

コマンドラインから最初に 'ping 79.49.72.102'を実行してください。 'ping'が動作する場合は、アドレスが有効であり、リクエストをブロックしているサーバーであることを意味します。サーバー管理者に相談して、ポートへのアクセスを開いてください。 – thekenobe

+0

"telnet 79.49.72.102 4000" –

0

デフォルトでは、ServerSocket(port)はlocalhostにのみバインドされます。試してみてください:

final ServerSocket server = new ServerSocket(4000, 0, null); 
0

あなたが使用しようとしたIPアドレスがルータのIPであるようです。インターネット経由でサーバーに接続する場合は、ルーターでポートマッピングを行う必要があります。 Like external_port -> local_ip:local_port あなたのサーバーでは、サーバーのローカルアドレスはlocal_iplocal_port4000です。そしてexternal portはあなたが望むものにすることができます。 ポートマッピングの後、ルータのIPと選択した外部ポートを使用してインターネット経由でサーバを使用することを覚えておいてください。

0

自分のサーバーpcのローカルIDアドレスをDMZルールに追加する問題を解決しました。 すべてうまくいく。

関連する問題