无法使用 PHP 客户机从 Java 套接字服务器读取响应


Cannot read response from Java socket server using PHP client

我有一个用Java编写的服务器。这是一个简单的,当客户端连接时回显"HELLO",然后回显客户端发送的任何回复。代码如下:

ServerSocket ss=new ServerSocket(2001);
while(true) {
  Socket s=ss.accept();
  BufferedReader in=new BufferedReader(new InputStreamReader(s.getInputStream()));
  PrintWriter out=new PrintWriter(s.getOutputStream(),true);
  out.println("HELLO");
  String msg=in.readLine();
  out.println(msg);
}

我有一个连接到服务器的 PHP 脚本:

<?php
  $socket=socket_create(AF_INET,SOCK_STREAM,getprotobyname('tcp'));
  socket_connect($socket,'127.0.0.1',2001);
  $msg=socket_read($socket,10);
  echo socket_write($socket,'I am the client.');
  $msg=socket_read($socket,20);
  echo $msg;
?>

我从服务器收到"HELLO"消息,服务器也收到"我是客户端"消息,但 PHP 客户端没有得到回复。我在这里做错了什么?

in.readLine()在看到行终止符之前不会返回。

除非 PHP 中的socket_write隐式添加行终止符,否则您需要自己执行此操作,以便 Java 端看到您编写了一整行文本。