Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.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_Http_Serversocket - Fatal编程技术网

无法从java服务器应用程序获取响应

无法从java服务器应用程序获取响应,java,http,serversocket,Java,Http,Serversocket,我有下面的代码,这是一个非常基本的服务器。在浏览器中,我放置了如下内容:localhost:6789/xxxx。当应用程序运行时,它确实从客户端读取请求,但随后会显示消息“无法访问此站点”,并且应用程序会引发异常。回应客户的最佳方式是什么 import java.net.*; import java.io.*; import java.net.Socket; public class URLConnection { public static void main(String[] ar

我有下面的代码,这是一个非常基本的服务器。在浏览器中,我放置了如下内容:localhost:6789/xxxx。当应用程序运行时,它确实从客户端读取请求,但随后会显示消息“无法访问此站点”,并且应用程序会引发异常。回应客户的最佳方式是什么

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

public class URLConnection {
    public static void main(String[] args)throws IOException {
        String clientSentence;
        ServerSocket welcomeSocket = new ServerSocket(6789);

        while (true) {
         Socket connectionSocket = welcomeSocket.accept();
         BufferedReader inFromClient =
          new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
         DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream());
         clientSentence = inFromClient.readLine();
         System.out.println("Received: " + clientSentence);
         outToClient.writeBytes("HTTP/1.1 200 OK");
        }
    }

}

您必须关闭OutputStream:

    while (true) {
        Socket connectionSocket = welcomeSocket.accept();
        BufferedReader inFromClient =
                new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
        DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream());
        clientSentence = inFromClient.readLine();
        System.out.println("Received: " + clientSentence);
        outToClient.writeBytes("HTTP/1.1 200 OK");
        outToClient.close();
    }
注意

  • 请求不一定是HTTP 1.1,因此您的响应将无效
  • >p>实际上会有几个<代码> clitScript < /代码>(即考虑添加一个循环如下)


谢谢。这就解决了问题。在旁注中,我想使用以下outToClient.writeBytes(“这是一个响应”)回复一条消息;网页是空白的。这是否需要采用不同的格式?请参阅下面我的答案,其中发送的响应将是“Hello world”。您需要在响应头之后发送两个回车('\n\n')。感谢提供这些有用的信息。今后我将牢记这一点。
while (true) {
    Socket connectionSocket = welcomeSocket.accept();
    BufferedReader inFromClient =
            new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
    DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream());

    while(true) {
        clientSentence = inFromClient.readLine();
        if (clientSentence != null && clientSentence.trim().isEmpty()) {
            break;
        } else {
            System.out.println("Received: " + clientSentence);
        }
    }

    outToClient.writeBytes("HTTP/1.1 200 OK\n\nHello world");
    outToClient.close();