可重复使用的插座

时间:2010-03-24 10:03:38

标签: php sockets reusability

我尝试在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文件发送的数据包没有被主机“验证”。我嗅到所有端口,我发现它使用相同的本地和目标端口。我不明白问题出在哪里。

你能帮我解决这个问题吗? 任何其他编程语言或任何其他解决方案都可以。

安德鲁

2 个答案:

答案 0 :(得分:1)

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

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

℃。

答案 1 :(得分:0)

你不能在php中真正使用持久套接字。当你执行一个php文件时,会创建一个新进程,该进程无法访问不同php进程的变量或套接字,因此它不知道是否已存在套接字并且只是创建它。