【问题标题】:Reading socket response with php does not work用php读取套接字响应不起作用
【发布时间】:2015-10-01 23:49:57
【问题描述】:

代码:

$str = "example";
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
          socket_connect($socket, "127.0.0.1", "2107");
          socket_listen($socket);
          socket_write($socket, $str, strlen($str));
$resp   = socket_read($socket, strlen($str), PHP_READ_NORMAL);
echo $resp;

没有 socket_read 它可以完美运行,我在控制台应用程序中获得 $str 值作为输出(来自控制台应用程序的响应是成功的)。但到目前为止,我添加 socket_read 脚本只是加载和挂断。而且我也没有在控制台应用程序中看到 $str 值,尽管这应该在套接字侦听响应之前完成(使用 socket_write)。然后在我的控制台应用程序中只有一个连接已建立但挂断的通知 - 没有 stream_read -> 完美。

有什么想法吗?

【问题讨论】:

    标签: php sockets tcp tcpsocket


    【解决方案1】:

    只是看看我的一些旧代码,我这样做似乎有效:

    //for connecting
    $serverConn = @stream_socket_client("tcp://127.0.0.1:2107", $errno, $errstr, 1);
    
    //for sending
    fwrite($serverConn, $message);
    
    
    //for reading
    $response = stream_get_contents($serverConn);
    

    这假设您已经在该端口上运行了一些服务。

    否则可能尝试使用socket_bind 而不是socket_connect

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-24
      • 2017-11-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多