Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.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 socket_sendto无法连接到任何主机_Php_Apache_Sockets - Fatal编程技术网

PHP socket_sendto无法连接到任何主机

PHP socket_sendto无法连接到任何主机,php,apache,sockets,Php,Apache,Sockets,我正在编写一个脚本,收集一些指标,并向另一台服务器发送一个摘要版本;我正在使用以下方法: <?php $statsHost="stats0"; $statsPort=2003; ... $size = strlen( $packet ); echo "The packet is [ " . $size . "b ]."; $sock = socket_create( AF_INET, SOCK_STREAM, SOL_TCP ); socket_sendto( $sock, $p

我正在编写一个脚本,收集一些指标,并向另一台服务器发送一个摘要版本;我正在使用以下方法:

<?php

$statsHost="stats0";
$statsPort=2003;

...

$size = strlen( $packet );
echo "The packet is [ " . $size . "b ].";

$sock = socket_create( AF_INET, SOCK_STREAM, SOL_TCP );

socket_sendto( $sock, $packet, $size, 0, $statsHost, $statsPort);

socket_close( $sock );
可能有一些php/httpd配置问题阻止了我这么做

SELinux被禁用;firewalld已禁用,我尝试使用IP地址而不是主机名,并且尝试连接到本地端口,所有这些都存在相同的问题

PHP版本信息

PHP 5.4.16 (cli) (built: Nov  6 2016 00:29:02)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
谢谢你给我指明了正确的方向

我不确定这是否是我正在运行的PHP版本的问题,但是

向套接字发送消息,无论其是否已连接

这似乎是错误的

为了让它正常工作,我必须给

// need to call
socket_connect($sock, $host, $port);

// or else this will throw broken pipe
socket_sendto( $sock, $packet, $size, 0, $host, $port);
谢谢你给我指明了正确的方向

我不确定这是否是我正在运行的PHP版本的问题,但是

向套接字发送消息,无论其是否已连接

这似乎是错误的

为了让它正常工作,我必须给

// need to call
socket_connect($sock, $host, $port);

// or else this will throw broken pipe
socket_sendto( $sock, $packet, $size, 0, $host, $port);

我在你的代码中没有看到套接字连接,也没有在php.net页面上看到创建非块的好例子。从文档-
socket\u sendto-向套接字发送消息,无论它是否已连接
-页面上有一个示例,我链接了错误检查,这可能有助于跟踪问题。幼崽,如果您将此作为答案添加,我将接受它,因为它可以工作。按照
socket\u sendto
页面上的示例,我无法使其工作。我所做的只是给你指出了正确的方向,你可以自己写答案,并将其标记为接受。很高兴我能提供帮助。我在你的代码中没有看到套接字连接,也没有创建非块。在php.net页面上有一些很好的例子。从文档-
socket\u sendto-向套接字发送消息,无论它是否已连接
-页面上有一个示例,我链接了错误检查,这可能有助于跟踪问题。幼崽,如果您将此作为答案添加,我将接受它,因为它可以工作。按照
socket\u sendto
页面上的示例,我无法使其工作。我所做的只是给你指出了正确的方向,你可以自己写答案,并将其标记为接受。很高兴我能帮忙。