我正在使用现有系统的套接字编写基于PHP的客户端。
实现协议基本上是可行的,但是对于下一步,我需要知道创建套接字的本地端口。
在服务器上我有以下输出:Socket [addr = / Client-IP,port = 40546,localport = 1338]
要进行通信工作,我需要获取端口40546(或连接时的任何内容)。遗憾的是,由于各种原因,无法更改协议。
先谢谢
阿德里安
编辑(代码段):
$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 :(得分:1)
我在php.net找到了一个函数。我认为这适合你。
socket_getsockname($socket, $ip, $port);
echo "ip: ".$ip;
echo "port: ".$port;
此处$ip
为您提供本地地址,$port
为您提供本地端口号。