php socket编程的作用,简单理解php的socket编程

Socket是什么呢?

Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP /IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。

366e8e0f67f9

image.png

366e8e0f67f9

image.png

socket的一些关键函数

socket的关键函数1:

socket_create($net参数1,$stream参数2,$protocol参数3)

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

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

参数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协议套接字。

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

SOL_TCP:  TCP 协议。

SOL_UDP:  UDP协议。

socket的关键函数2:

socket_connect($socket参数1,$ip参数2,$port参数3)

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

参数1:socket_create的函数返回值

参数2:ip地址

参数3:端口号

socket的关键函数3:

socket_bind($socket参数1,$ip参数2,$port参数3)

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

参数1:socket_create的函数返回值

参数2:ip地址

参数3:端口号

socket的关键函数4:

socket_listen($socket参数1,$backlog 参数2)

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

参数1:socket_create的函数返回值

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

socket的关键函数5:

socket_accept($socket)

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

参数:socket_create的函数返回值

socket的关键函数6:

socket_read($socket参数1,$length参数2)

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

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

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

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

socket的关键函数7:

socket_write($socket参数1,$msg参数2,$strlen参数3)

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

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

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

参数2:字符串

参数3:字符串的长度

socket的关键函数8:

socket_close($socket)

作用:关闭套接字

返回值:成功返回true,失败为false

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

//设置套接字选项

socket_set_option ( resource $socket , int $level , int $optname , mixed $optval )

$socket socket_create或者socket_accept的函数返回值

$level 这个值 SOL_SOCKET

$optname

SO_REUSEADDR 是让套接字端口释放后立即就可以被再次使用

SO_RCVTIMEO 是套接字的接收资源的最大超时时间

SO_SNDTIMEO 是套接字的发送资源的最大超时时间

$optval

参数3假如是后两个,则参数4是一个这样的数组array('sec'=>1,'usec'=>500000),如果是第一个 就是true 或者false

//获取套接字选项

socket_get_option ( resource $socket , int $level , int $optname )

//实现io多路复用 返回活跃的连接

socket_select ( array &$read , array &$write , array &$except , int $tv_sec [, int $tv_usec = 0 ] )

注意 :前三个参数都是引用传值。

$read 服务端监听的套接字资源,当它有变化(就是有新消息到或者有客户端连接/断开)时,socket_select函数才会返回,继续往下执行。

$write是监听是否有客户端写数据,传入NULL是不关心是否有写变化。

$except是$sockets里面要被排除的元素,传入NULL是”监听”全部。

第四个参数为null为阻塞, 为0位非阻塞, 为 >0 为等待时间

bool socket_set_option ( resource

math?formula=socket%20%2C%20intlevel , int

math?formula=optname%20%2C%20mixedoptval )

socket

使用socket_create()或socket_accept()创建有效的套接字资源

level

该level参数指定选项所在的协议级别。例如,要在套接字级别检索选项level,SOL_SOCKET将使用参数。

通过指定该级别的协议号,可以使用其他级别,例如TCP。协议编号可以通过使用getprotobyname()函数找到。

optname

可用的套接字选项与socket_get_option()函数的套接字选项相同。

optval

期权价值

366e8e0f67f9

image.png

366e8e0f67f9

image.png

366e8e0f67f9

image.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值