我有一个用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客户端没有得到回复。我在这里做错了什么?
答案 0 :(得分:4)
in.readLine()
在看到行终止符之前不会返回。
除非PHP中的socket_write
隐式添加行终止符,否则您需要自己执行此操作,以便Java端看到您编写了完整的文本行。