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

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

安德鲁

4

2 回答 2

1

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

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

C。

于 2010-03-24T12:47:49.043 回答
-1

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

于 2010-03-24T10:26:16.400 回答