国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > PHP > 正文

php socket編程-網絡字節序,大端序-workerman

2020-03-22 18:30:04
字體:
來源:轉載
供稿:網友
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.

<?phphtml' target='_blank'>class AndyHua extends Man/Core/SocketWorker{    public function dealInput($recv){        //目前已經收到的長度$len = strlen($recv);//preread_length = 2if($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

14144448_bV1G.png

5. [圖片] QQ截圖20141114144329.png

14144448_aBLY.png

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 逊克县| 富源县| 临潭县| 康保县| 确山县| 平舆县| 临泉县| 察哈| 中山市| 施甸县| 天峨县| 朝阳县| 六枝特区| 冕宁县| 花垣县| 宁波市| 和平区| 京山县| 资溪县| 安义县| 武夷山市| 霍林郭勒市| 澎湖县| 潍坊市| 金山区| 灵川县| 昌江| 永登县| 紫阳县| 通江县| 宁德市| 瑞昌市| 高台县| 麻城市| 泰来县| 古丈县| 湘乡市| 陆河县| 九寨沟县| 宝应县| 旌德县|