tft每日頭條

 > 生活

 > php獲取socket連接的詳細信息

php獲取socket連接的詳細信息

生活 更新时间:2024-09-29 11:27:45
1、案例函數彙總

php獲取socket連接的詳細信息(php利用原生socket創建udp服務)1

2、案例

通過socket創建udp服務,獲取對端的ip和port信息。并進行打印

2.1、udp服務源碼

<?php

/**

* Copyright(C) Iamasb

* @project : 3、workerman相關知識點

* @explain : 原生socket創建創建udp服務

* @filename : socket_udp.php

* @author : Iamasb

*/

// 創建udp

if (!($resource = socket_create(AF_INET,SOCK_DGRAM, SOL_UDP))) {

echo "socket create is error";

exit();

}

// 綁定本地ip和端口

if (!socket_bind($resource,'0.0.0.0','1235')) {

echo "socket bind is error";

exit();

}

// 設置端口複用

if (!socket_set_option($resource, SOL_SOCKET, SO_REUSEADDR, 1)) {

echo 'Unable to set option on socket: '. socket_strerror(socket_last_error()) . PHP_EOL;

exit;

}

// 循環

while (1) {

$from = '';

$port = 0;

// 接收數據

socket_recvfrom($resource, $buf, 1024, 0, $from, $port);

echo "Received $buf from remote address $from and remote port $port" . PHP_EOL;

// 往對端發送數據

socket_sendto($resource,'iamasb',strlen('iamasb'),0,$from,$port);

}

2.2、啟動udp服務

3、測試

通過編寫udp客戶端進行測試

3.1、udp客戶端代碼

<?php

if (!($resource = socket_create(AF_INET,SOCK_DGRAM, SOL_UDP))) {

echo "socket create is error";

exit();

}

$msg = "Ping !";

$len = strlen($msg);

socket_sendto($resource, $msg, $len, 0, '127.0.0.1', 1235);

$from = '';

$port = 0;

socket_recvfrom($resource, $buf, 1024, 0, $from, $port);

echo "Received $buf from remote address $from and remote port $port" . PHP_EOL;

socket_close($resource);

3.2、執行udp客戶端

php獲取socket連接的詳細信息(php利用原生socket創建udp服務)2

此時udp服務端的打印結果如下

php獲取socket連接的詳細信息(php利用原生socket創建udp服務)3

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved