首页 » 网站推广 » php横着换行技巧_socket通信很难这一文让你轻松搞定

php横着换行技巧_socket通信很难这一文让你轻松搞定

访客 2024-11-23 0

扫一扫用手机浏览

文章目录 [+]

2. Socket在哪里呢?

3. Socket是什么呢?

php横着换行技巧_socket通信很难这一文让你轻松搞定

4. 怎么利用socket编程?

php横着换行技巧_socket通信很难这一文让你轻松搞定
(图片来自网络侵删)
TCP/IP协议、UDP协议

TCP/IP(Transmission Control Protocol/Internet Protocol)即传输掌握协议/网间协议,

是一个工业标准的协议集,它是为广域网(WANs)设计的。

UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。

它是属于TCP/IP协议族中的一种。

这里有一张图,表明了这些协议的关系。

TCP-IP,UDP协议关系

TCP/IP协议族包括运输层、网络层、链路层。
现在你知道TCP/IP与UDP的关系了吧。

UDP是属于TCP/IP协议族中的一种

Socket在哪里?

在上图中,我们没有看到Socket的影子,那么它到底在哪里呢?请看下图,一览无余。

socket所在位置

原来Socket在这里

Socket是什么?

Socket是运用层与TCP/IP协议族通信的中间软件抽象层。

它是一组接口。

在设计模式中,Socket实在便是一个门面模式,它把繁芜的TCP /IP协议族隐蔽在Socket接口后面。

对用户来说,一组大略的接口便是全部,让Socket去组织数据,以符合指定的协议。

socket通信流程

听到Socket编程,是不以为它是比较博识的编程知识呢?但是只要弄清Socket编程的事情事理,神秘的面纱也就揭开了。
请看下图:

socket编程流程图

先从做事器端提及。

做事器端先初始化Socket,

然后与端口绑定(bind),

对端口进行监听(listen),

调用accept壅塞,

等待 客户端连接。

在这时如果有个客户端初始化一个Socket,

然后连接做事器(connect),如果连接成功,这时客户端与做事器真个连接就建立了。

客户端发送数据要求(write),

做事器端吸收要求(read)并处理要求,

然后把回应数据发送给客户端(write),

客户端读取数据(read),

末了关闭连接,一次交互结束。

搞懂socket通信流程了吧?来,对照scoket通信流程图,代码撸起!

socket编程php代码实战

首先,做事端代码Server.php如下:

//确保在连接客户端时不会超时set_time_limit(0);$ip = '127.0.0.1';$port = 8888;/ +------------------------------- @socket通信全体过程+------------------------------- @socket_create 1.初始化Socket @socket_bind 2.端口绑定(bind) @socket_listen 3.对端口进行监听(listen) @socket_accept 4.调用accept壅塞,等待 客户端连接 @socket_read 5.吸收客户端要求数据 @socket_write 6.回应数据发送给客户端 @socket_close 7.关闭连接 +-------------------------------- //---------------- 1.初始化Socket -------------------///创建做事真个socket套接流,net协议为IPv4,protocol协议为TCP$socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP);/---------------- 2.端口绑定(bind) -------------------//绑定吸收的套接流主机和端口,与客户审察对应/if(socket_bind($socket,$ip,$port) == false){ echo 'server bind fail:'.socket_strerror(socket_last_error()); /这里的127.0.0.1是在本地主机测试,你如果有多台电脑,可以写IP地址/}/---------------- 3.对端口进行监听(listen) -------------------///监听套接流if(socket_listen($socket,4)==false){ echo 'server listen fail:'.socket_strerror(socket_last_error());}/---------------- 4.调用accept壅塞,等待 客户端连接 -------------------///让做事器无限获取客户端传过来的信息do{ /吸收客户端传过来的信息/ $accept_resource = socket_accept($socket); /socket_accept的浸染便是接管socket_bind()所绑定的主机发过来的套接流/ if($accept_resource !== false){ /读取客户端传过来的资源,并转化为字符串/ /----------5.吸收客户端要求数据-----------/ $string = socket_read($accept_resource,1024); /socket_read的浸染便是读出socket_accept()的资源并把它转化为字符串/ echo 'server receive is :'.$string.PHP_EOL;//PHP_EOL为php的换行预定义常量 if($string != false){ $return_client = 'server receive is : '.$string.PHP_EOL; /向socket_accept的套接流写入信息,也便是回馈信息给socket_bind()所绑定的主机客户端/ /------6.回应数据发送给客户端-----------/ socket_write($accept_resource,$return_client,strlen($return_client)); /socket_write的浸染是向socket_create的套接流写入信息,或者向socket_accept的套接流写入信息/ }else{ echo 'socket_read is fail'; } /socket_close的浸染是关闭socket_create()或者socket_accept()所建立的套接流/ socket_close($accept_resource); }}while(true);socket_close($socket);

运行server.php,启动socket做事端

php server.php

现在做事真个程序已经开始运行,端口已经开始监听了

客户端client.php代码如下:

//初始化一个Socket 创建一个socket套接流$socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP);/设置socket连接选项,这两个步骤你可以省略///吸收套接流的最大超时时间1秒,后面是微秒单位超时时间,设置为零,表示不管它socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, array("sec" => 1, "usec" => 0));//发送套接流的最大超时时间为6秒socket_set_option($socket, SOL_SOCKET, SO_SNDTIMEO, array("sec" => 6, "usec" => 0));/设置socket连接选项,这两个步骤你可以省略///连接做事真个套接流,这一步便是使客户端与做事器真个套接流建立联系if(socket_connect($socket,'127.0.0.1',8888) == false){ echo 'connect fail massege:'.socket_strerror(socket_last_error());}else{ $message = 'l love you 我爱你 socket'; //转为GBK编码,处理乱码问题,这要看你的编码情形而定,每个人的编码都不同 $message = mb_convert_encoding($message,'GBK','UTF-8'); //向做事端写入字符串信息 if(socket_write($socket,$message,strlen($message)) == false){ echo 'fail to write'.socket_strerror(socket_last_error()); }else{ echo 'client write success'.PHP_EOL; //读取做事端返回来的套接流信息 while($callback = socket_read($socket,1024)){ echo 'server return message is:'.PHP_EOL.$callback; } }}socket_close($socket);//事情完毕,关闭套接流

运行client.php代码:

php client.php

至此客户端已经连接上做事端了,并和做事端通信了。
赶紧本地代码撸起来,记得查当作果哦

php7进阶到架构师干系阅读

https://www.kancloud.cn/gofor/gofor

末了,欢迎大家留言补充,谈论~~~
标签:

相关文章