2010-03-24 8 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 파일에서 보내는 패킷은 호스트에서 "유효성을 검사하지"않습니다. 나는 모든 포트를 스니핑했는데 동일한 로컬 포트와 목적지 포트를 사용한다는 것을 알았습니다. 나는 문제가 어디 있는지 이해하지 못한다.

도와 드릴까요? 다른 프로그래밍 언어 또는 이에 대한 다른 해결책에서는 괜찮습니다.

앤드류

답변

0

PHP에서는 영구 소켓을 사용할 수 없습니다. PHP 파일을 실행하면 다른 PHP 프로세스의 변수 또는 소켓에 액세스 할 수없는 새 프로세스가 만들어 지므로 이미 소켓이 있는지 여부를 알지 못하고 그냥 만듭니다.

+0

좋아,하지만 다른 sollutions? – Andrew

1

소켓이 대칭이 아닙니다. 서버 측은 클라이언트가 로컬 포트를 지정하지 않고 원격 포트와 주소 만 연결하도록 클라이언트가 특정 포트에서 수신 대기합니다. 당신이 그것을 구현하는 언어와 관련이 없다.

예를 들어 http://www.phpclasses.org/browse/package/5758.html에서 사용할 수있는 아주 좋은 소켓 서버 구현이있다.

c