簡體   English   中英

Java Server獲取GET / POST HTTP請求

[英]Java Server to get GET/POST HTTP request

我想在自己的PC上啟動服務器以獲取GET / POST HTML請求。

這是我使用的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));
            }
        }
    }

我試圖將HTML請求從瀏覽器網絡發送到ip:port,如下所示:

http://79.49.72.102:4000 

但我總是得到ERR_CONNECTION_REFUSED。 我嘗試使用localhost:4000並收到了請求。 我還使用了No-IP並在路由器上設置了端口轉發功能,但似乎沒有任何效果。

我該怎么辦?

連接被拒絕,因為服務器79.49.72.102不允許您使用HTTP在端口4000上進行連接。 這是通過服務器上的防火牆實施的常見安全措施。

誰擁有79.49.72.102? 它看起來像一個公共地址,因此它將不接受非標准端口(例如4000)上的隨機傳入連接。

默認情況下,ServerSocket(port)僅綁定到localhost。 嘗試這個:

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

您嘗試使用的IP地址似乎是您的路由器IP。 如果要通過Internet連接到服務器,則必須在路由器中進行端口映射。 就像external_port -> local_ip:local_port在您的情況下,您必須在其中運行serer的計算機的local_ip本地ip,編寫時local_port4000 external port可以是您想要的。 請記住,端口映射之后,您將通過路由器ip和您選擇的外部端口在Internet上使用服務器。

我解決了將服務器PC的本地ID地址添加到DMZ規則中的問題。 一切順利。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM