2014-02-08 78 views
1

我在使用現有系統的套接字編寫一個基於PHP的客戶端。套接字,PHP,本地端口

實現協議基本上是可行的,但對於下一步我需要知道創建套接字的本地端口。

在我有以下輸出服務器:套接字[地址= /客戶端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

我在php.net找到了一個函數,我覺得這適用於你。

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

這裏$ip給你的本地地址和$port給你一個本地端口號。

+0

非常感謝。這工作!看來我今晚並沒有把這個功能展現出來,正如我在瀏覽php.net時看到的那樣:-D – boindil