美文网首页程序员
php socket函数学习

php socket函数学习

作者: 小小浪把_Dont_know拍 | 来源:发表于2017-04-04 21:59 被阅读293次

    php函数

    socket_create

    创建socket资源

    resource socket_create ( int $domain , int $type , int $protocol )
    

    domain

    socket要使用的协议集,这个参数看着有点歧义,不知道的还以为是域名呢。取这个名字,估计是为了和第三个参数作区分。

    Domain 描述
    AF_INET IPv4 网络协议
    AF_INET6 IPv6 网络协议
    AF_UNIX 本地通讯协议

    type

    套接字类型

    type 描述
    SOCK_STREAM 字节流。TCP基于这种流式套接字
    SOCK_DGRAM 数据报文。UDP基于这种数据报文套接字
    SOCK_SEQPACKET 提供固定长度的数据通信
    SOCK_RAW 提供读取原始的网络协议。一般使用这个套接字来实现ICMP请求(例如 ping)
    SOCK_RDM 提供一个可靠的数据层,但不保证到达顺序。一般操作系统未实现此功能。

    protocol

    与domain结合使用,设置指定domain套接字下的具体协议。这里的值可以通过 getprotobyname() 进行读取。例如

    socket_create(AF_INET, SOCK_STREAM, getprotobyname('ip'));
    

    getprotobyname

    返回/etc/protocols下的协议值。

    int getprotobyname ( string $name )
    

    以osx系统下的/etc/protocols为例,这里只显示其中一部分较常用的。

    name proto
    ip 0
    icmp 1
    tcp 6
    udp 17

    socket_bind

    将地址端口绑定到socket资源上,在使用 socket_connect() 或者 socket_listen() 之前调用此函数。

    bool socket_bind ( resource $socket , string $address [, int $port = 0 ] )
    

    socket_listen

    用于服务端,监听socket的连接。

    bool socket_listen ( resource $socket [, int $backlog = 0 ] )
    

    在 socket_create() 和 socket_bind() 完成以后调用。

    socket_listen()只适用于SOCK_STREAM或者SOCK_SEQPACKET。

    socket

    用socket_create()创建的一个有效连接。

    backlog

    socket连接请求队列的最大数量,如果连接请求进来,队列已满,则直接抛出ECONNREFUSED错误。

    socket_set_option

    设置socket参数

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

    socket

    同上。

    level

    level指定了协议层级依赖的选项。例如,为了从socket一级获取选项,参数level就可以指定为SOL_SOCKET。其他值也可以用getprotobyname()获取。

    optname

    socket可选设置,这里有很多,我们只用到一个SO_REUSEADDR。

    optname 描述
    SO_REUSEADDR 是否需要重复使用地址

    optval

    optname对应的值。

    socket_set_nonblock

    设置socket为非阻塞。

    bool socket_set_nonblock ( resource $socket )
    

    当一个操作作用在非阻塞的socket上时,脚本不会暂停执行,直到收到信号或者它可以执行操作了。然而,如果一个操作会导致阻塞,调用方法会失败。

    参考资料

    php长连接,奏是这么简单
    细说socket

    相关文章

      网友评论

        本文标题:php socket函数学习

        本文链接:https://www.haomeiwen.com/subject/yqizottx.html