java - 使用原始套接字发送 HTTP 响应,客户端未收到消息

标签 java

我正在尝试将此消息实体正文发送给客户端。但是,这条消息似乎并没有传达出去。造成这种情况的可能原因是什么?字符串消息

String message = "HTTP/1.0 404 Not Found\r\n" +
                  "Server: " + 
                 "Content-type: html" +
                 "error\r\n" +
                 "<HTML>" +
                 "<HEAD><TITLE>404</TITLE></HEAD>" +
                 "<BODY>404 Not Found" +
                 "<br> nothing </BODY></HTML>" ;

然后,我使用 PrintStream instace 来发送消息,它的参数是 message.getBytes()

浏览器上看不到 html 消息。

  PrintStream sender = new PrintStream(this.socket.getOutputStream());

  String message = // above lines

  sender.write(message.getBytes())

最佳答案

假设您通过原始套接字发送此数据,您需要修复以下问题:

  • 每个 header 后面都需要一个 CRLF(回车换行)。
  • header 字段中不应包含“:”字符。
  • Content-type 应为 Content-Type,并且没有名为 error 的标准 header (除非这是您发送的自定义 header ,请将其删除)。
  • html 不是有效的内容类型,请尝试 text/html

关于java - 使用原始套接字发送 HTTP 响应,客户端未收到消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15634331/

相关文章:

java - Android 适配器因 ArrayIndexOutOfBoundsException 崩溃

java - JBoss JMS : ERROR: JBREM000200: Remote connection failed: javax. security.sasl.SaslException:身份验证失败:服务器出现

java - 部署war到JBOSS

java - 使用带有嵌套 "?"泛型类型的 Set 调用 java 方法

java - 在哪里可以找到 Java 的语法高亮库?

java - Maven 插件可以自动从 "configuration"部分看到 "execution"标签吗?

java - 在构造函数内初始化对象的 ArrayList 时遇到问题

java - 是否可以使用反射 API 或其他一些东西在运行时访问方法的局部变量?

java - 是否有 BiConsumer 的反向映射到元组等多个值

java - SpringBoot 通过 @Autowired HttpServletRequest 转发请求导致 StackOverFlow 异常