1.
<?php //网络字节序是指大端序,TCP/IP都是采用网络字节序的方式。 //======================================================================================================// //n -- 无符号短整数 (16位, 大端字节序) $str = 'test.string'; $pack = pack('n', strlen($str)); echo strlen($pack); // 2个字节,此值是确定的 $unpack = unpack('nLen', $pack); // Len相当于定义的一个变量,返回值为打包时的长度 echo $unpack['Len']; // 等于strlen($str) 11个字节 //exit; //======================================================================================================// //N -- 无符号长整数 (32位, 大端字节序) $str = 'test.string'; $pack = pack('N', strlen($str)); echo strlen($pack); // 4个字节,此值是确定的 $unpack = unpack('NLen', $pack); // Len相当于定义的一个变量,返回值为打包时的长度 echo $unpack['Len']; // 等于strlen($str) 11个字节 exit; //======================================================================================================// //如果提供socket服务方定义的 //请求边界标识的长度为2,则用unsigned 16位的 ‘n’ //请求边界标识的长度为4,则用unsigned 32位的 ‘N’ //那么整个包体为 【网络字节序】+数据包实体,附加发送的长度参数为:【数据包实体长度+网络字节序长度】 $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); $connect = socket_connect($socket, '192.168.1.10', 55660); $buffer = '我是数据包实体'; $length = strlen($buffer); $pack = pack("N", $length + 4); socket_write($socket, $pack.$buffer, $length + 4); //同样unpack出来的lenght也是等于strlen($buffer)+4 //那么socket_read之后的返回数据包就需要去掉4个长度就可以了
2.
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); $conn = socket_connect($socket, '192.168.1.10', 55660); $buffer = 'test.string'; $len = strlen($buffer); echo 'buffter length: '.$len.' '; $pack = pack('n', $len + 2); $send = socket_write($socket, $pack.$buffer, $len + 2); if($send){ echo 'send ok '; } $read = socket_read($socket, 10240); echo 'read data:'.$read .' '; echo 'read length:'.strlen($read).' '; echo 'real data is:'.substr($read, 2);
3.
<?php class AndyHua extends Man\Core\SocketWorker{ public function dealInput($recv){ //目前已经收到的长度 $len = strlen($recv); //preread_length = 2 if($len < 2){ return 2 - $len; } $t = unpack('nLen', $recv); //Len为包的实际长度 return $t['Len'] - $len; //如果$t['Len']等于$len那就说明已经接收完了 } public function dealProcess($recv){ return $this->sendToClient($recv); //return $this->sendToClient(substr($recv, 2)); } }
4. [图片] QQ截图20141114144433.png
5. [图片] QQ截图20141114144329.png
陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章
刺客信條陰影:貝殼謎語解決方案
3 週前ByDDD
Windows 11 KB5054979中的新功能以及如何解決更新問題
2 週前ByDDD
在哪裡可以找到原子中的起重機控制鑰匙卡
3 週前ByDDD
<🎜>:死鐵路 - 如何完成所有挑戰
4 週前ByDDD
Atomfall指南:項目位置,任務指南和技巧
4 週前ByDDD

熱工具

SublimeText3 Linux新版
SublimeText3 Linux最新版

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

Dreamweaver Mac版
視覺化網頁開發工具

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中