我对 PHP 很陌生,所以这可能很简单。无论如何,我正在尝试在 PHP 脚本(由 Web 客户端激活)和本地进程(用 C++ 编写)之间创建双向通信。PHP 脚本应该向 C++ 进程发送一些信息,然后等待响应。我的问题是设置这种通信的唯一方法似乎是使用 socket_bind,但是当我这样做时,它会失败并出现“地址已在使用”错误。有问题的套接字文件 /tmp/sock 已经由持续运行的 C++ 进程创建(它不能由 PHP 脚本启动)。如果我使用 socket_connect 并且只是向 C++ 进程写一些东西,那效果很好;但我需要先绑定,然后才能从 PHP 脚本中收听该套接字。这是我的代码:
<?php
error_reporting(E_ALL);
/* Allow the script to hang around waiting for connections. */
set_time_limit(0);
/* Turn on implicit output flushing so we see what we're getting
* as it comes in. */
ob_implicit_flush();
//Adapted from http://www.php.net/manual/en/sockets.examples.php
if (($sock = socket_create(AF_UNIX, SOCK_STREAM,0)) === false)
{
echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "\n";
exit();
}
if (socket_bind($sock, '/tmp/sock') === false) //Fails here
{
echo "socket_bind() failed: reason: " . socket_strerror(socket_last_error($sock)) . "\n";
}
....
谢谢 -