2014-02-08 2 views
1

나는 기존 시스템에 대한 소켓을 사용하여 PHP 기반 클라이언트를 쓰고 있어요. 프로토콜을 구현 소켓, PHP, 로컬 포트 ​​

은 기본적으로 작동되지만 다음 단계 나는 소켓이 생성되는 로컬 포트를 알아야합니다. 나는 다음과 같은 출력을 서버에서

: 소켓 [ADDR =/클라이언트 IP, 포트 = 40546, localport = 1338] 통신이 작동하려면, 나는 포트 40546를 취득 (또는 무엇이든을 할 필요가

연결시). 안타깝게도 여러 가지 이유로 프로토콜을 변경할 수 없습니다. advcance에서

감사

아드리안

EDIT (코드) :

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); 
socket_connect($socket, 192.168.0.12, 1338); 
// Need to know local socket port (e.g. 40546) 
$socketport = ?????? 
$message = "somestring"; 
$message = $protocol->encode($message, $socketport); 
socket_write($socket, $message, strlen($message)); 

이 기본적으로 그것이 무엇이다. 소켓을 만들고 연결 한 후 클라이언트 측 포트를 알아야합니다. 즉, 수동으로 설정할 필요가 없습니다.

+0

당신은 코드가 필요합니다. – Zak

답변

1

나는이 당신을 위해 작동 생각 .I php.net의 기능을 발견했다.

socket_getsockname($socket, $ip, $port); 
echo "ip: ".$ip; 
echo "port: ".$port; 

여기 $ip 당신에게 지역의 요지를 제공하고 $port없이 당신에게 로컬 포트를 제공합니다. 사람들이 당신을 도울 수있을 때까지

+0

고마워요. 이 작품! 그것은 오늘 밤 php.net 브라우징하는 동안 본 기능을 unterstand하지 않았다 것 : - D 조 – boindil