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