Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 代理服务器未从服务器获取响应_Java_Debugging_Proxy Server - Fatal编程技术网

Java 代理服务器未从服务器获取响应

Java 代理服务器未从服务器获取响应,java,debugging,proxy-server,Java,Debugging,Proxy Server,这是我第一次制作网络服务器。我想创建一个代理服务器。目前,我正在将服务器设置为www.google.com,而不是对HTTP请求进行任何解析 我在命令行上运行ProxyServer,然后在另一个命令行窗口上使用telnet server_name 5000调用服务器,然后是GET/HTTP/1.1 在处理服务器响应的while循环之前,一切都正常工作。什么也没印出来。为什么会这样 谢谢你的帮助 import java.net.*; import java.io.*; public class

这是我第一次制作网络服务器。我想创建一个代理服务器。目前,我正在将服务器设置为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请求中的反斜杠应该是正斜杠。

哦,我意识到我的描述与代码不一致。让我再测试一次。好的,我修复了请求,服务器仍然没有返回任何东西。也许你应该看看你的客户端代码是否可以在不使用代理服务器的情况下连接。