首页|操作系统|软件开发|网页制作|媒体动画|数据库|ASP教程|ASP.NET教程|PHP教程|JSP教程|XML教程|建站资料|软件学院|行业资讯|平面设计|网络安全|晒IT论坛|IT人才
  位置: 晒IT >> PHP教程 >> PHP提高教程 >> 正文
 
 
PHP的Socket函数参考
PHP的Socket函数参考
 
 
    socket_close($socket);
?>
resource socket_create(integer family, integer socket_type, integer protocol)
socket_create初始化一个socket的结构。第一个参数是一个protocol family,或者域。你必须使用AF_INET来指定一个Internet连接,或者使用AF_UNIX来指定一个Unix socket连接。第二个参数是一个socket的类型,你可以从下面的表中选择。一般情况下,使用SOCK_STREAM来使用TCP协议,UDP协议使用SOCK_DGRAM。第三个参数指定为一个协议。使用SOL_TCP或SOL_UDP来分别对应TCP和UDP协议。还有一个选择是你能够使用getprotobyname函数来处理。
Socket 类型
常量 描述
SOCK_DGRAM 自动寻址数据包socket
SOCK_RAW RAW协议接口
SOCK_RDM 可靠交换消息
SOCK_SEQPACKET 顺序数据包socket
SOCK_STREAM 流socket
resource socket_create_listen(integer port, integer backlog)
使用socket_create_listen是一种比socket_create更简单的产生一个socket进行监听。这个产生的socket将监听指定的端口,后面可选的参数backlog是设置允许最大的连接数。
boolean socket_create_pair(integer family, integer socket_type, integer protocol, array handles)
socket_create_pair函数产生一对socket连接。首先前三个参数是对一个socket_create的描述,这个handles参数是一个包含两个socket资源的数组。该函数是对C里面socketpair函数的封装。
socket_create_pair
<?php
    if(!socket_create_pair(AF_UNIX, SOCK_STREAM, 0, $socket))
    {
        print("Couldn't make sockets!\n");
        exit();
    }
    $child = pcntl_fork();
    if($child == -1)
    {
        print("Couldn't fork!\n");
        exit();
    }
    elseif($child > 0)
    {
        //parent
        socket_close($socket[0]);
        print("Parent: waiting for message\n");
        $message = socket_read($socket[1], 1024, PHP_NORMAL_READ);
        print("Parent: got message--$message\n");
        socket_write($socket[1], "Hello, Child Process!\n");
        pcntl_waitpid($child, $status);
    }
    else
    {
        //child
        socket_close($socket[1]);
        socket_write($socket[0], "Hello, Parent Process!\n");
        print("Child: waiting for message\n");
        $message = socket_read($socket[0], 1024, PHP_NORMAL_READ);
        print("Child: got message--$message\n");
        exit(0);
    }
?>
value socket_get_option(resource socket, integer level, integer option)
socket_get_option函数返回一个下表中所列的一个添加值,你必须提供一个由socket_create产生的socket资源和一个等级。这个获取的socket级别,可以使用SOL_SOCKET来确定这个级别参数。另外,使用协议,比如象SOL_TCP来表示一个TCP协议。这些选项可能是由socket_set_option设置的。
socket_get_options
<?php
    $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
    print('SO_BROADCAST: ' .
        socket_get_option($socket, SOL_SOCKET,
            SO_BROADCAST) . "<br>\n");
    print('SO_DEBUG: ' .
        socket_get_option($socket, SOL_SOCKET,
            SO_DEBUG) . "<br>\n");
    print('SO_DONTROUTE: ' .
        socket_get_option($socket, SOL_SOCKET,
            SO_DONTROUTE) . "<br>\n");
    print('SO_ERROR: ' .
        socket_get_option($socket, SOL_SOCKET,
            SO_ERROR) . "<br>\n");
    print('SO_KEEPALIVE: ' .
        socket_get_option($socket, SOL_SOCKET,
            SO_KEEPALIVE) . "<br>\n");
    print('SO_LINGER: ' .
        print_r(socket_get_option($socket, SOL_SOCKET,
            SO_LINGER), TRUE) . "<br>\n");
    print('SO_OOBINLINE: ' .
        socket_get_option($socket, SOL_SOCKET,
            SO_OOBINLINE) . "<br>\n");
    print('SO_RCVBUF: ' .
        socket_get_option($socket, SOL_SOCKET,
            SO_RCVBUF) . "<br>\n");
    print('SO_RCVLOWAT: ' .
        socket_get_option($socket, SOL_SOCKET,
            SO_RCVLOWAT) . "<br>\n");
    print('SO_RCVTIMEO: ' .
        print_r(socket_get_option($socket, SOL_SOCKET,
            SO_RCVTIMEO), TRUE) . "<br>\n");
    print('SO_REUSEADDR: ' .
        socket_get_option($socket, SOL_SOCKET,
            SO_REUSEADDR) . "<br>\n");
    print('SO_SNDBUF: ' .
        socket_get_option($socket, SOL_SOCKET,
            SO_SNDBUF) . "<br>\n");
    print('SO_SNDLOWAT: ' .
        socket_get_option($socket, SOL_SOCKET,
            SO_SNDLOWAT) . "<br>\n");
    print('SO_SNDTIMEO: ' .
        print_r(socket_get_option($socket, SOL_SOCKET,
            SO_SNDTIMEO), TRUE) . "<br>\n");
    print('SO_TYPE: ' .
        socket_get_option($socket, SOL_SOCKET,
            SO_TYPE) . "<br>\n");
?>
  • 上一篇: header()函数使用说明
  • 下一篇: PHP和Socket
  •  告诉好友  打印此文 关闭窗口 返回顶部
     
    热点文章
     
     
    推荐文章
     
     
    相关文章

    | 设为首页 | 加入收藏 | 联系我们 | 友情链接 | 诚聘英才 |
    Copyright© 2008 ShaiIT.Com .All Rights Reserved
    下载alexa工具,提升您的网站排名