首页 > 编程知识 正文

php连接socket,tcp/ip网络编程项目式教程

时间:2023-05-05 06:06:39 阅读:162607 作者:3773

1 . php

//网络字节序是指大字节序,TCP/IP都采用网络字节序方式。

//=======================================================================================

//n --无符号的短整数(16位,大字节序) )。

$str='test.string ';

$pack=pack(n ),strlen ) ) $str );

EchoStrlen($pack; //2字节,该值已确定

$unpack=unpack('nlen ',$pack ); //Len相当于被定义的变量之一,返回值是打包时的长度

echo $unpack['Len']; //strlen($str )等于11个字节

//exit;

//=======================================================================================

//N --无符号长整数(32位,大字节序) ) ) ) )。

$str='test.string ';

$pack=pack(n ),strlen ) ) $str );

EchoStrlen($pack; //4字节,该值已确定

$unpack=unpack('nlen ',$pack ); //Len相当于被定义的变量之一,返回值是打包时的长度

echo $unpack['Len']; //strlen($str )等于11个字节

退出;

//=======================================================================================

//提供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 3360 '.strlen ($ read ).'

';

echo ' realdatais : '.substr ($ read,2 );

3 . php

classandyhuaextendsmancoresocket worker {

publicfunctiondealinput($recv ) {

//目前收到的长度

$len=Strlen($recv );

//preread_length=2

if($len2) {

返回2-$ len;

}

$t=unpack('nlen ',$recv );

//Len是软件包的实际长度

return $t['Len'] - $len;

如果$t['Len']等于$len,表示收到了

}

publicfunctiondealprocess{

返回$ this-send to client ($ recv );

//return $ this-send to client (substr ) $recv,2 );

}

}

4.[图片] QQ截图20141114144433.png

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

本文原创发布了php中文网。 转载请注明出处。 谢谢您的尊重。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。