关于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编程的详细内容,结合实例详解
