0

我有一个用 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 客户端没有收到回复。我在这里做错了什么?

4

1 回答 1

4

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

除非socket_write在 PHP 中隐式添加行终止符,否则您需要自己这样做,以便 Java 端看到您已经编写了完整的文本行。

于 2012-05-19T18:39:02.260 回答