您的位置:首页 > 理论基础 > 计算机网络

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

2015-11-23 16:13 645 查看
1.python写法

import socket

def 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写法

<?php

function 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: