用php读取套接字响应不起作用

时间:2015-07-13 15:56:38

标签: php sockets tcp tcpsocket

代码:

$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 - >完美。

有什么想法吗?

1 个答案:

答案 0 :(得分: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