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

标签 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 -> 完美。

有什么想法吗?

最佳答案

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

//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

关于php - 用 php 读取套接字响应不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31388037/

相关文章:

php - Google Cloud Storage 上传错误 - strpos() : Empty needle

PHP 一次服务一页

c# - 从 MemoryStream 反序列化对象时出错

用于游戏登录/身份验证的 Java Socket 服务器

.net - 发起TCP连接关闭后如何接收数据?

java - 使用 jPcap 在 Java 中重建实时 TCP session

php - 如何在我的 php 上启用 XDebug 扩展?

php - MySQL ORDER BY 结果不是按字母顺序排列的

c# - Unity WebRequest 与 C++ 套接字对话

python 3 : TCP Client/Server Broken Pipe Error