-1

我编写了一个简单的 java 客户端来从我的 java web 服务器发送请求和接收数据。服务器能够处理持久连接,当我使用浏览器发送请求时一切正常,但是当我使用客户端发送请求时,它仅适用于非持久连接。当我使用我的 java 客户端发送请求时,它会接收从服务器请求的数据,然后冻结。我的java客户端代码:

     public static void main(String[] args) throws UnknownHostException, IOException {
        // TODO code application logic here
        String sentence;
        String modifiedSentence;
        BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));
        Socket clientSocket = new Socket("127.0.0.1", 6789);
        DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());
BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
        System.out.println("Enter the file name that you would like to request from Server:");
        sentence = inFromUser.readLine();

        System.out.println("would you like to have a persistent connection (yes/no):");
        String sentence1 = inFromUser.readLine();
        if(sentence1.equals("yes")){sentence1="Connection: keep-alive";}

        else{sentence1="Connection: close";}
        outToServer.writeBytes("GET /"+sentence + "\r\n");
        outToServer.writeBytes(sentence1+"\r\n");
        outToServer.writeBytes("\r\n");

        while ((modifiedSentence=inFromServer.readLine()) != null) 
        {
              System.out.println("FROM SERVER: " + modifiedSentence);
        }

        System.out.println("done");

        clientSocket.close();
    }
4

1 回答 1

0

我的猜测是,您尝试modifiedSentence=inFromServer.readLine()在服务器关闭连接(也关闭套接字和其他流)之后尝试,然后您得到一个java.net.SocketException.

尝试用 try/catch 包围它并打印错误消息/堆栈跟踪

于 2013-09-18T18:12:53.990 回答