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

时间:2012-05-19 18:27:18

标签: java php sockets client-server

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

1 个答案:

答案 0 :(得分:4)

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

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