2010-03-24 32 views
2

我尝试在php中创建套接字并从其他进程中重用它。 我知道这可以用一个守护进程脚本来完成,但我不想这样做。可重复使用的插座

我创建了一个套接字并将其绑定到特定端口。

$sock = socket_create (AF_INET, SOCK_STREAM, SOL_TCP); 
socket_set_option ($sock, SOL_SOCKET, SO_REUSEADDR, 1); 
socket_bind ($sock, 'xx.xx.xx.xx', 10000); 
socket_connect ($sock, $host, $port); 

从另一个php文件中,我做了同样的事情。但是我从第2个文件发送的数据包没有被主机“验证”。我嗅探了所有的端口,我发现它使用相同的本地和目的端口。我不明白问题在哪里。

你能帮我吗? 在任何其他编程语言或任何其他解决方案中都可以。

Andrew

回答

0

你不能在php中使用持久套接字。当你执行一个php文件时,会创建一个新的进程,它不能访问另一个php进程的变量或套接字,所以它不知道是否已经存在一个套接字并创建它。

+0

好的,但有其他的解决办法吗? – Andrew 2010-03-24 10:46:38

1

插座不对称。服务器端监听特定端口以供客户端连接 - 客户端不指定本地端口 - 只有远程端口和地址。它与你实现它的语言无关。

http://www.phpclasses.org/browse/package/5758.html有一个非常好的套接字服务器实现,并带有示例。

C.