无法连接到本地套接字,连接被拒绝
我已经在这几天了,只是不能解决问题。我也把它放在Ubuntu论坛上,什么都没听到。基本上,我有一个本地套接字中,我在一个PHP成功创建的/ tmp/mysockets script--无法连接到本地套接字,连接被拒绝
if (($sock = socket_create(AF_UNIX, SOCK_STREAM,0)) === false)
{
echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "\n";
exit();
}
但我无法连接,通过
if (socket_connect($sock, $sock_str) === false)
{
echo "socket_connect() on " . $sock_str . " failed: reason: " . socket_strerror(socket_last_$
socket_close($sock);
exit();
}
这给了我
警告:socket_connect():无法连接[111]:连接被拒绝 in line 66上的/var/www/myscript.php socket_connect() /tmp/mysockets/sock失败:原因:连接被拒绝
现在,我认为这可能是一个权限问题,但我已经将/ tmp,mysockets和sock chmod 777,并没有关系。可能是什么问题呢?
所以,事实证明,应该听这个套接字的进程崩溃了 - 我正在远程做这个(我只是习惯远程编译/调试),所以我没有看到这首先。对不起,我们错误地描述了这个问题。 @duskwuff你有正确的想法。
您需要在socket_create()
之后使用socket_bind()
和socket_listen()
。
谢谢我试过socketbind($ sock,'127.0.0.1')并得到'无法绑定,权限被拒绝',所以这是进步,但我喜欢我说的一切都是777.这是什么意思? –
如果您尝试绑定到低编号的端口,则需要成为root用户。 –
@Michael get_current_user()返回'root'。 –
你叫'socket_listen()'? – stewe
@stewe脚本在socket_bind()上已经失败,参见下文 –
如果有的话,什么都在监听套接字?您无法连接到无人监听连接的套接字。 – duskwuff