Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.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/scala/17.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/7/user-interface/2.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 Can';无法识别客户端http头何时完成_Java_Scala_Websocket - Fatal编程技术网

Java Can';无法识别客户端http头何时完成

Java Can';无法识别客户端http头何时完成,java,scala,websocket,Java,Scala,Websocket,我使用ServerSocket.accept()等待客户端,然后按如下方式处理: val in = new BufferedReader(new InputStreamReader(socket.getInputStream())) var line = in.readLine() while (line != null) { //... line = in.readLine() } 为了发送响应,我如何知道客户端已完成发送头 具体而言,我指的是这些标题: GET /mychat HTTP/1

我使用
ServerSocket.accept()
等待客户端,然后按如下方式处理:

val in = new BufferedReader(new InputStreamReader(socket.getInputStream()))
var line = in.readLine()
while (line != null) {
//...
line = in.readLine()
}
为了发送响应,我如何知道客户端已完成发送头

具体而言,我指的是这些标题:

GET /mychat HTTP/1.1 Host: server.example.com Upgrade: websocket Connection: Upgrade Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw== Sec-WebSocket-Protocol: chat Sec-WebSocket-Version: 13 Origin: http://example.com 但它不起作用


有效的方法是
line.isEmpty()
。但这很奇怪,因为流应该包含某些内容,而所有包含的内容都返回false

websocket握手只是一个http请求。因此,您应该能够通过回车符/换行符(\r\n)判断标题何时结束

你用的是什么客户机?也许客户有问题


您知道自己不需要构建websockets库。有许多开源的替代方案,比如作为其一部分的一个。

readLine
从它读取的每一行末尾删除
\r\n
,因此空行就是
,没有任何
\r
\n
字符。

我更改了标题,使问题更一般(http标题),谢谢
if (line.contains("\r\n")) {
    println("1")
}
if (line.contains("\r")) {
    println("2")
}
if (line.contains("\n")) {
    println("3")
}