为什么socket_connect()会返回错误#2:“没有这样的文件或目录”?

时间:2010-11-05 22:54:17

标签: php sockets

我在C ++中编写了一个简单的套接字服务器,我将用它来在其他几个守护进程之间进行通信。服务器本身很好;它正在侦听端口3000上的TCP连接。netstat显示以下内容:

Proto Recv-Q Send-Q  Local Address          Foreign Address        (state)
tcp4       0      0  *.30000                *.*                    LISTEN

但是,在PHP中,如果我使用以下几行简单的代码:

$sock = socket_create(AF_UNIX, SOCK_STREAM, 0);
socket_connect($sock, '127.0.0.1', 30000);

我得到以下内容:

Warning: socket_connect() [function.socket-connect]: unable to connect [2]:
No such file or directory in /foo/bar/baz.php on line 8

这是用于IPC套接字的正确协议(0)吗?我可能忽略了一些愚蠢的事情 - 任何想法都会受到赞赏。

1 个答案:

答案 0 :(得分:2)

AF_UNIX替换为AF_INET(或PF_INET - 请参阅Protocol and address families)以创建TCP / IP套接字(我假设这是您想要的,因为您正在尝试连接到IP地址)。正如现在所写,socket_create调用创建了一个Unix socket - 它映射到文件系统上的一个对象,因此出现错误消息。