当前位置: 首页> 函数类别大全> socket_getpeername

socket_getpeername

查询给定套接字的远程端,它可能导致主机/端口或Unix文件系统路径,具体取决于其类型
名称:socket_getpeername
分类:套接字Sockets
所属语言:php
一句话介绍:查询给定套接字的远程端,它可能导致主机/端口或Unix文件系统路径,具体取决于其类型

socket_getpeername 函数

适用 PHP 版本

PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8

函数说明

socket_getpeername 函数用于获取与给定套接字关联的远程主机的地址信息。通常用于服务器端获取客户端的 IP 地址或主机名。

函数语法

socket_getpeername(resource $socket, string &$address, int &$port): bool

参数

  • $socket:套接字资源,通常是通过调用 socket_accept() 或 socket_create() 等函数获取的套接字。
  • $address:返回参数,填充此参数为连接的远程主机的地址。
  • $port:返回参数,填充此参数为远程主机的端口号。

返回值

成功时返回 true,失败时返回 false。如果失败,可以通过 socket_last_error() 获取详细的错误信息。

示例

  // 创建一个 TCP 套接字
  $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
  if ($socket === false) {
      echo "创建套接字失败:".socket_strerror(socket_last_error())."\n";
      exit;
  }
<p>// 绑定套接字到指定的地址和端口<br>
$result = socket_bind($socket, '127.0.0.1', 8080);<br>
if ($result === false) {<br>
echo "绑定失败:".socket_strerror(socket_last_error($socket))."\n";<br>
exit;<br>
}</p>
<p>// 开始监听套接字<br>
$result = socket_listen($socket, 5);<br>
if ($result === false) {<br>
echo "监听失败:".socket_strerror(socket_last_error($socket))."\n";<br>
exit;<br>
}</p>
<p>// 接受客户端连接<br>
$clientSocket = socket_accept($socket);<br>
if ($clientSocket === false) {<br>
echo "接受连接失败:".socket_strerror(socket_last_error($socket))."\n";<br>
exit;<br>
}</p>
<p>// 获取客户端的远程地址和端口<br>
$address = '';<br>
$port = 0;<br>
if (socket_getpeername($clientSocket, $address, $port)) {<br>
echo "客户端 IP 地址:$address,端口:$port\n";<br>
} else {<br>
echo "获取远程地址失败:".socket_strerror(socket_last_error($clientSocket))."\n";<br>
}</p>
<p>// 关闭套接字<br>
socket_close($clientSocket);<br>
socket_close($socket);<br>

示例代码的说明

这段代码创建了一个 TCP 套接字,绑定到本地地址 127.0.0.1 的 8080 端口,然后监听客户端的连接。当有客户端连接进来时,调用 socket_getpeername 函数获取该客户端的 IP 地址和端口号,并输出。最后,关闭客户端和服务器端的套接字。

同类函数
热门文章