簡體   English   中英

代理服務器未從服務器獲得響應

[英]Proxy server does not get response from server

這是我第一次制作網絡服務器。 我想創建一個代理服務器。 現在,我將服務器設置為“ www.google.com”,並且不進行任何HTTP請求解析。

我在命令行上運行ProxyServer,然后在另一個命令行窗口上使用“ telnet server_name 5000”,然后是“ GET / HTTP / 1.1”來調用服務器。

一切正常,直到處理服務器響應的while循環。 什么都沒有打印出來。 為什么會這樣?

所有幫助表示贊賞。

import java.net.*;
import java.io.*;

public class ProxyServer {
    public static void main(String[] args) throws IOException {

    int proxyServerPortNumber = 5000;
    String hostName = "www.google.com";
    int portNumber = 80;


    try {
        // SERVER
        // Open socket connection and bind it to proxyServerPortNumber
        ServerSocket serverSocket =
            new ServerSocket(proxyServerPortNumber);

        // Listen and accept request
        Socket clientSocket = serverSocket.accept();     
        System.out.println("client request accepted");

        // send to client socket
        PrintWriter sendToClient =
            new PrintWriter(clientSocket.getOutputStream(), true);     

        // get from client socket           
        BufferedReader getFromClient = new BufferedReader(
            new InputStreamReader(clientSocket.getInputStream()));

        // CLIENT
        // open socket connection
        Socket echoSocket = new Socket(hostName, portNumber);

        // send to server
        PrintWriter out =
            new PrintWriter(echoSocket.getOutputStream(), true);

        // get from server
        BufferedReader in =
            new BufferedReader(
                new InputStreamReader(echoSocket.getInputStream()));


        String clientRequest;
        // clientRequest = "GET / HTTP/1.1\r\n\r\n";
        while ((clientRequest = getFromClient.readLine()) != null) {
            System.out.println("in while loop");
            System.out.println(clientRequest);

            out.println(clientRequest); // send to server
            System.out.println("sent to server");

            //Get response from server
             String response;
             while ((response = in.readLine()) != null) // no response why?
            {
                sendToClient.println("echo: " + response);
                System.out.println("echo:" + response);
            }    
        } // end while loop


    } catch (IOException e) {
        System.out.println("Exception caught when trying to listen on port "
            + portNumber + " or listening for a connection");
        System.out.println(e.getMessage());
    }


}
}

HTTP請求中的反斜杠應為正斜杠。

暫無
暫無

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

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