当前位置: 首页 > 后端技术 > PHP

phpsocket编程实例详解

时间:2023-03-29 18:01:07 PHP

关于socket编程涉及到的网络协议,如TCP、UDP、socket三向握手等,这些网络协议在网上都有非常详细的解释。这里就不说了,直接截图给大家看看socket建立的过程图: 这张图是我偷别人的,大家一定要好好看看。谢谢,很抱歉盗用了你的图案,希望你不要太在意。懒得画图了,(其实是对自己的画功没自信,呵呵)。点击进入,免费领取PHP学习资料。socket是如何建立连接的?上面说了建立连接的过程,本质上和mysql客户端与服务器建立连接是一样的。它和mysql的区别在于mysql的server和client已经帮我们编辑好了,我们只需要应用它就可以了。然而关键时刻来了,socket并没有为我们提供什么,它唯一提供给我们的就是:几十个socket函数。    言外之意就是socket编程需要我们自己创建server和client,也就是说``socket编程``——就是自己创建一个类似于mysqlserver和client的应用。    说到这里,我想问一下,你觉得这个socket很头疼吗?它既不为我们的应用程序构建服务器也不构建客户端。它坚持让我们应用套接字函数,创建我们自己的网络协议套接字应用程序。这不让你很头疼吗?没有办法头疼。如果您需要自己的应用程序,您仍然需要处理套接字。呵呵,这只是题外话,话不多说,进入正题。    在你被socket编程搞糊涂之前,先给大家展示一下socket的几个关键函数,先给大家解释一下它们各自的作用。否则如果是没有socket编程基础的人看了,恐怕看完后你会果断跳过这篇文章,从此对socket产生恐惧症。哈哈,多说几句。socket的关键函数1: socket_create($net参数1,$stream参数2,$protocol参数3)    功能:创建socket套接字。说白了,就是网络数据流。    返回值:一个socket,或者false,参数error发送E_WARNING警告PHP的在线手册说的比较清楚:socket_create创建并返回一个socket,也称为通信节点。典型的网络连接由2个套接字组成,一个在客户端运行,另一个在服务器端运行。上面这句话是从php在线手册上抄来的。看到了吗,是不是和我上面反复提到的client和server一模一样?呵呵。    参数1为:网络协议,    的网络协议有哪些?它的选项有以下三个:AF_INET:  IPv4网络协议。TCP和UDP都可以使用这个协议。这个一般用,你懂的。AF_INET6:  IPv6网络协议。TCP和UDP都可以使用这个协议。AF_UNIX:  本地通信协议。高性能低成本的IPC(Inter-ProcessCommunication)。    参数2:socket流,选项有:    SOCK_STREAMSOCK_DGRAMSOCK_SEQPACKETSOCK_RAWSOCK_RDM。    这里只解释前两个:SOCK_STREAMTCP协议套接字。SOCK_DGRAMUDP协议套接字。        参数3:protocol协议,选项有:SOL_TCP:  TCP协议。SOL_UDP:  UDP协议。    从这里可以看出socket_create函数的第二个参数和第三个参数其实是有关联的。    比如第一个参数使用IPv4协议:AF_INET,然后第二个参数使用TCP套接字:SOCK_STREAM,    那么第三个参数必须使用SOL_TCP,这个应该不难理解。    TCP协议socket,当然只能用TCP协议了吧?如果你用的是UDPsockets,那第三个参数怎么选就不说了,呵呵,你懂的。    关键函数2:socket_connect($socket参数1,$ip参数2,$port参数3)    功能:连接一个socket,返回值为trueorfalse    参数1:socket_create函数返回值    参数2:ip地址    参数3:端口号    关键函数3:    socket_bind($socket参数1,$ip参数2,$port参数3)    功能:绑定一个socket,返回值为true或false  参数1:socket_create函数返回值    参数2:ip地址    参数3:端口号    关键函数4:    socket_listen($socket参数1,$backlog参数2)    功能:监听一个socket,返回值为true或false参数1:socket_create函数返回值    参数2:最大监听socket个数    关键作用5:    socket_accept($socket)    功能:接收socket资源信息,成功返回socket信息资源,失败则为false  参数:socket_create函数返回值    关键函数6:    socket_read($socket参数1,$length参数2)    功能:读取socket资源信息,    返回值:成功将socket资源转换为字符串信息,false   参数1:socket_create或socket_accept函数返回value    参数2:读取的字符串长度    关键函数7:    socket_write($socketParameter1,$msgparameter2,$strlenparameter3)    功能:将数据写入socket    返回值:成功则返回字符串的字节长度,失败则返回false   Parameter1:socket_create或socket_accept函数返回值参数2:字符串    参数3:字符串长度    关键函数8:    socket_close($socket)    函数:关闭套接字    返回值:成功返回true,失败返回false  参数:socket_create或socket_accept的函数返回值    这8个函数是socket的核心函数,下面是两个比较重要的函数    socket_last_error($socket),参数为socket_create的返回值,函数是获取socket最后的错误码号,返回值socketcode    socket_strerror($code),参数为socket_last_error函数的返回值,并获取到代码的字符串信息,返回值为ersocket的错误消息    这两个函数在socket编程中还是很重要的。写socket编程的时候,我觉得还是要用到的,尤其是初学者,可以用来调试    下面是代码,注意,请仔细看我的评论,评论很重要,评论很重要,评论很重要,重要的事情要喊三声,哈哈。服务器端脚本,D:\vhost\test\socket\server_socket.php`1,'usec'=>500000)seconds,一个是微秒,两者的作用是一样的344162.html)以上就是php中socket编程的详细内容,结合实例详解