怎么在php项目中实现一个套接字编程功能

  介绍

怎么在php项目中实现一个套接字编程功能?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

插座是怎么建立连接的呢?上面已经提到过了,它建立连接的过程是与mysql的客户端和服务端的连接本质是一样的。而它与mysql不同的是,mysql的服务端和客户端都已经为我们编辑好了,我们只要应用就行了。但是,关键时刻来啦,套接字它什么东西都没有提供给我们,唯一提供给我们的就是:几十个插座函数。

这言外之意就是说,套接字编程就是要我们自己创建服务端和客户端,也就是说,‘套接字编程”——就是要我们自己建立一个类似于mysql的服务端和客户端的应用。

说到这里,我想问一句,你说这插座让人头疼不?它既不建立个服务端,也不建立个客户端给我们应用,非要让我们自己去应用插座的函数,创建一个属于我们自己的网络协议套接应用,这是不是很让你头疼呢?头疼也没办法,要是你需要自己的应用,你还是不得不跟插座打交道。呵呵,这只是题外话,不多说,下面进入正题。

在你没有被套接字编程搞蒙之前,我还是让你看看插座的几个关键函数,先给你解释一下它们各自的作用,不然,要是对套接字编程一点基础都没有的人看到的了,我怕你看了之后,就果断跳过这篇文章,从此对套接字产生恐惧症了。呵呵,又多说了。

插座的关键函数1:

, socket_create(美元净参数1美元流参数2美元协议参数3)

作用:创建一个socket套接字,说白了,就是一个网络数据流。

返回值:一个套接字,或者是假,参数错误发出E_WARNING警告

php的在线手册那里说得更清楚:

socket_create创建并返回一个套接字,也称作一个通讯节点。一个典型的网络连接由2个套接字构成,一个运行在客户端,另一个运行在服务器端。

上面一句话是从php在线手册那里复制过来的。看到没有,这里说得意思是不是和我上面反反复复提到的客户端与服务端一模一样?呵呵。

参数1是:网络协议,

网络协议有哪些吗?它的选择项就下面这三个:

AF_INET:,, IPv4网络协议.TCP和UDP都可使用此协议。一般都用这个,你懂的。

AF_INET6:, IPv6网络协议.TCP和UDP都可使用此协议。

AF_UNIX:,,本地通讯协议。具有高性能和低成本的IPC(进程间通讯)。

参数2:套接字流,选项有:

SOCK_STREAM SOCK_DGRAM SOCK_SEQPACKET SOCK_RAW SOCK_RDM。

这里只对前两个进行解释:

SOCK_STREAM TCP协议套接字。

SOCK_DGRAM, UDP协议套接字。

欲了解更多请链接这里:http://php.net/manual/zh/function.socket-create.php

参数3:协议协议,选项有:

SOL_TCP: TCP协议。

SOL_UDP: UDP协议。

从这里可以看的出,其实socket_create函数的第二个参数和第三个参数是相关联的。

比如,假如你第一个参数应用IPv4协议:AF_INET,然后,第二个参数应用的是TCP套接字:SOCK_STREAM,

那么第三个参数必须要用SOL_TCP,这个应该不难理解。

TCP协议套接字嘛,当然只能用TCP协议了,是不是吗?如果你应用UDP套接字,那么第三个参数该怎么选择我就不说了,呵呵,你懂的。

关键函数2:

socket_connect(美元插座参数1,$ ip参数2美元港口参数3)

作用:连接一个套接字,返回值为真或假者

参数1:socket_create的函数返回值

参数2:ip地址

参数3:端口号

关键函数3:

socket_bind(美元插座参数1,$ ip参数2美元港口参数3)

作用:绑定一个套接字,返回值为真或假者

,,,参才能数1:socket_create的函数返回值

参数2:ip地址

参数3:端口号,

关键函数4:

socket_listen(美元插座参数1美元积压参数2)

作用:监听一个套接字,返回值为真或假者

参数1:socket_create的函数返回值

参数2:最大监听套接字个数

关键函数5:

socket_accept(插座)

作用:接收套接字的资源信息,成功返回套接字的信息资源,失败为假

,,,参数:socket_create的函数返回值

关键函数6:

socket_read(美元插座参数1美元长度参数2)

作用:读取套接字的资源信息,

返回值:成功把套接字的资源转化为字符串信息,失败为假

,,参数1:socket_create或者socket_accept的函数返回值

参数2:读取的字符串的长度

关键函数7:

socket_write(美元插座参数1美元味精参数2美元strlen参数3)

作用:把数据写入套接字中

返回值:成功返回字符串的字节长度,失败为假

怎么在php项目中实现一个套接字编程功能