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
Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel
Wie kann ich KB5055523 in Windows 11 nicht installieren?
3 Wochen vorByDDD
Inzoi: Wie man sich für Schule und Universität bewerbt
1 Monate vorByDDD
Wie kann ich KB5055518 in Windows 10 nicht installieren?
3 Wochen vorByDDD
Wo finden Sie den Site Office -Schlüssel in Atomfall
1 Monate vorByDDD

Heiße Werkzeuge

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

VSCode Windows 64-Bit-Download
Ein kostenloser und leistungsstarker IDE-Editor von Microsoft

Dreamweaver CS6
Visuelle Webentwicklungstools

Dreamweaver Mac
Visuelle Webentwicklungstools

SublimeText3 Linux neue Version
SublimeText3 Linux neueste Version
