0

我正在尝试在 PHP 套接字和 JAVA 套接字之间传输简单的消息。php 套接字成功发送数据并等待 Java 服务器响应。但另一方面,Java 服务器的套接字仍在等待来自 PHP 的消息。

这是Java代码:

ServerSocket s = new ServerSocket(4280);
Socket sock = s.accept();
System.out.println("Connected");
BufferedReader br = new BufferedReader(new InputStreamReader(sock.getInputStream()));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(sock.getOutputStream()));
System.out.println("Reading");
String str = br.readLine();
System.out.println("Writing");
bw.write(str);

输出:

连接的

阅读

这是PHP代码:

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_connect($socket, "localhost", 4280);
socket_write($socket, "Hello");
echo socket_read($socket, 10);
socket_write($socket, "Lelo");
echo socket_read($socket, 10);

输出:

浏览器:等待本地主机

4

2 回答 2

3

通常会导致问题的两件事:

  • Java 正在使用该readLine()方法,但您没有在 PHP 代码中发送linefeed和返回。
  • 尝试在 PHP 端刷新。

代码:

添加换行符:

socket_write($socket, "Hello\r\n");
于 2013-06-21T15:24:24.357 回答
1

String str = br.readLine();期望\n不是由 PHP 程序发送的。

添加这个:

socket_write($socket, "Hello\n" ); // <<<=== '\n' added
于 2013-06-21T15:24:13.340 回答