【问题标题】:PHP socket sends data but Java socket is not receivingPHP 套接字发送数据但 Java 套接字未接收
【发布时间】:2013-06-18 18:58:05
【问题描述】:

我正在尝试在 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);

输出:

浏览器:等待本地主机

【问题讨论】:

    标签: java php sockets


    【解决方案1】:

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

    添加这个:

    socket_write($socket, "Hello\n" ); // <<<=== '\n' added
    

    【讨论】:

      【解决方案2】:

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

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

      代码:

      添加换行符:

      socket_write($socket, "Hello\r\n");
      

      【讨论】:

        猜你喜欢
        • 2017-01-12
        • 1970-01-01
        • 2012-02-16
        • 1970-01-01
        • 2012-01-26
        • 2013-03-21
        • 2010-11-14
        • 2012-02-12
        • 2017-07-13
        相关资源
        最近更新 更多