Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 套接字编程:套接字读取,fgets无法获得响应_Php_Json_Sockets_Fgets - Fatal编程技术网

Php 套接字编程:套接字读取,fgets无法获得响应

Php 套接字编程:套接字读取,fgets无法获得响应,php,json,sockets,fgets,Php,Json,Sockets,Fgets,我正在尝试使用套接字编程从URL获取响应,但没有任何操作正常。我使用的是PHP,与我一起工作的开发人员告诉我,我需要打开一个套接字,发送一个请求,然后我应该得到一个JSON响应。$message是需要发送以接收响应的字符串 这就是我到目前为止所尝试的 $message = "api\tjson\tget\trooms\n"; $response = fsockopen("142.4.xxx.xxx", 5678); fputs($response, $message); fgets($respo

我正在尝试使用套接字编程从URL获取响应,但没有任何操作正常。我使用的是PHP,与我一起工作的开发人员告诉我,我需要打开一个套接字,发送一个请求,然后我应该得到一个JSON响应。
$message
是需要发送以接收响应的字符串

这就是我到目前为止所尝试的

$message = "api\tjson\tget\trooms\n";
$response = fsockopen("142.4.xxx.xxx", 5678);
fputs($response, $message);
fgets($response, 2048);
$data = json_decode($response, true);
然后我继续解析JSON响应

我也试过,

$message = "api\tjson\tget\trooms\n";
$response = fsockopen("142.4.xxx.xxx", 5678);
fputs($response, $message);
socket_read($response, 2048, PHP_NORMAL_READ);
$data = json_decode($response, true);

但是我得到一个错误,指出socket_read不是正确的资源。任何帮助都将不胜感激

至少需要进行一些错误检查。也许这会有帮助:

$message = "api\tjson\tget\trooms\n";
$response = fsockopen("142.4.xxx.xxx", 5678, $errno, $errstr, 30);
if (!$response) {
    echo "$errstr ($errno)<br />\n";
} else {
    $out = "POST /script.php HTTP/1.1\r\n";
    $out .= "Host: www.webste.com\r\n";
    $out .= "Content-Type: application/x-www-form-urlencoded\r\n";
    $out .= 'Content-Length: ' . strlen($message) . "\r\n\r\n";
    $out .= "Connection: Close\r\n\r\n";
    fwrite($response, $out);
    fwrite($response, $message);
    while (!feof($response)) {
        echo fgets($response, 128);
    }
    fclose($response);
}
$message=“api\tjson\tget\trooms\n”;
$response=fsockopen(“142.4.xxx.xxx”,5678,$errno,$errstr,30);
如果(!$response){
回显“$errstr($errno)
\n”; }否则{ $out=“POST/script.php HTTP/1.1\r\n”; $out.=“主机:www.webste.com\r\n”; $out.=“内容类型:应用程序/x-www-form-urlencoded\r\n”; $out.=“内容长度:”.strlen($message)。“\r\n\r\n”; $out.=“连接:关闭\r\n\r\n”; fwrite($response,$out); fwrite($response,$message); 而(!feof($response)){ echo fgets(回应,128美元); } fclose(答复); }
您会发现这更容易。