php - Socket_read() 说 "not a valid resource"

标签 php sockets

我正在学习套接字编程并尝试使用 php。 我想使用客户端连接到套接字服务器并从客户端读取服务器的响应。

代码:

服务器.php:

$address="127.0.0.1";
$port=3343;
echo "I am here";
set_time_limit (0);
if(false==($socket=  socket_create(AF_INET,SOCK_STREAM, SOL_TCP)))
{
    echo "could not create socket";
}
socket_bind($socket, $address, $port) or die ("could not bind socket");
socket_listen($socket);
if(($client=socket_accept($socket)))
    socket_write($client, "Welcome!!", 1024);

socket_close($socket);

客户端.php

$host="127.0.0.1" ;
$port=3343;
$timeout=30;
$sk=fsockopen($host,$port,$errnum,$errstr,$timeout) ;
if (!is_resource($sk)) {
    exit("connection fail: ".$errnum." ".$errstr) ;
} else {
    echo socket_read($sk, 256);
    //echo "Connected";
}

连接时,

服务器输出:

I am here

客户端输出:

Warning: socket_read(): supplied resource is not a valid Socket resource in C:\xampp\htdocs\users\srv\test\client.php on line 16

最佳答案

在这里发现问题。

socket_read() 不适用于未使用 socket_create() 创建的套接字。

工作代码:

$host="127.0.0.1" ;
$port=3343;
$timeout=30;
$sk=fsockopen($host,$port,$errnum,$errstr,$timeout) ;
if (!is_resource($sk)) {
    exit("connection fail: ".$errnum." ".$errstr) ;
} else {
    while (!feof($sk)) echo fgets($sk, 256); //This does the trick
    //echo "Connected";
}

关于php - Socket_read() 说 "not a valid resource",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29060616/

相关文章:

php - Binance API仅出售利润和所有仓位

c - 为什么我在尝试接受连接时遇到 "Invalid argument"?

java - 单个 Socket 的多个 InputReader

Java 套接字卡住

java - 通过NAT的P2P即时通讯

Python3套接字模块: decoding str

php - Smarty 模板运行时出现非法字符串

php - Mysql没有正确插入二进制数据

php - 使用 Eloquent 在选择查询中将外部元素传递到模型

php - 包含双引号值的输入字段