Многоразовая розетка - PullRequest
       9

Многоразовая розетка

2 голосов
/ 24 марта 2010

Я попытался создать сокет в 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

Ответы [ 2 ]

1 голос
/ 24 марта 2010

Розетки не симметричны. Серверная сторона прослушивает определенный порт для подключения клиента - клиент не указывает локальный порт - только удаленный порт и адрес. Это никак не связано с языком, на котором вы его реализуете.

Очень хорошая реализация сокет-сервера доступна на http://www.phpclasses.org/browse/package/5758.html с примерами.

C.

0 голосов
/ 24 марта 2010

Вы не можете использовать постоянные сокеты в php. Когда вы выполняете файл php, создается новый процесс, который не может получить доступ к переменным - или сокетам - другого процесса php, поэтому он не будет знать, существует ли уже сокет, и просто создаст его.

...