[python&php 网络编程]重用socket地址

来源:互联网 发布:数据库虚拟化 编辑:程序博客网 时间:2024/05/08 23:13

1.python写法

import socketdef reuse_socket_addr():    sock = socket.socket( socket.AF_INET, socket.SOCK_STREAM )    # Get the old state of the SO_REUSEADDR option    old_state = sock.getsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR )    print "Old sock state: %s" %old_state    # Enable the SO_REUSEADDR option    sock.setsockopt( socket.SOL_SOCKET, socket.SO_REUSEADDR, 1 )    new_state = sock.getsockopt( socket.SOL_SOCKET, socket.SO_REUSEADDR )    print "New sock state: %s" %new_state    local_port = 8282        srv = socket.socket(socket.AF_INET, socket.SOCK_STREAM)    srv.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)    srv.bind( ('', local_port) )    srv.listen(1)    print ("Listening on port: %s " %local_port)    while True:        try:            connection, addr = srv.accept()            print 'Connected by %s:%s' % (addr[0], addr[1])        except KeyboardInterrupt:            break        except socket.error, msg:            print '%s' % (msg,)if __name__ == '__main__':    reuse_socket_addr()

2.php写法

<?phpfunction reuse_socket_addr(){    $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);    // Get the old state of the SO_REUSEADDR option    $old_state = socket_get_option($socket, SOL_SOCKET, SO_REUSEADDR);    printf("Old sock state: %s\n", $old_state);    // Enable the SO_REUSEADDR option    socket_set_option($socket,SOL_SOCKET,SO_REUSEADDR, 1);    $new_state = socket_get_option($socket, SOL_SOCKET, SO_REUSEADDR);    printf("New sock state: %s\n", $new_state);    $local_port = 8282;    $srv = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);    socket_set_option($srv, SOL_SOCKET, SO_REUSEADDR, 1);    socket_bind($srv, '127.0.0.1', $local_port);    socket_listen($srv);    printf("Listening on port: %s ", $local_port);    while(true){        $msg = socket_accept($srv);        if($msg !== false){            $buf = socket_read($srv, MAXLINE);        }else{            $error = socket_strerror(socket_last_error($srv));            printf("%s", $error);        }    }}reuse_socket_addr();

转载请标注原文地址:http://blog.csdn.net/ddjohn/article/details/49996669

0 0