如何在PHP中查找套接字的本地端口?
问题描述:
我创建使用UDP套接字:如何在PHP中查找套接字的本地端口?
$sock = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
当我使用socket_getsockname获得套接字名称:
/**
* Get Source port (Refactored to allow unit testing)
*
* @return string
*/
private static function getSourcePort($sock)
{
$addr = null;
$port = null;
socket_getsockname($sock, $addr, $port);
return $port;
}
端口返回总是0,地址为0.0.0.0
如何正确获取绑定端口?
答
绑定套接字之后,创建固定的问题:
if (socket_bind($sock, $sourceIp) === false)
{
$failReason = "socket_bind() failed: reason: " . socket_strerror(socket_last_error());
}
// get the source port
$sourcePort = 0;
if (socket_getsockname($sock, $sourceIp, $sourcePort) === false)
{
$failReason = "socket_getsockname() failed: reason: " . socket_strerror(socket_last_error());
}
[插座,PHP,本地端口(可能的重复https://stackoverflow.com/questions/21640660/sockets-php-local-port ) – Dalton
这里返回的端口总是0,addr是0.0.0.0 – ssk
嗯,是的,你正在创建套接字,但你没有连接它:'socket_connect($ sock,$ server_ip_here,$ port_here)';之后,它应该返回正确的IP和端口。 – icecub