差異處

這裏顯示兩個版本的差異處。

連向這個比對檢視

python:socket:time_wait_issue [2016/08/18 16:32]
tony 建立
python:socket:time_wait_issue [2023/06/25 09:48]
行 1: 行 1:
-{{tag>​python socket}} 
-====== TIME_WAIT issue after closing the socket ====== 
-===== Problem ===== 
-<code python> 
-import socket 
-import os 
-import sys 
  
-def acceptConn(s):​ 
- while True: 
- conn = None 
- try: 
- conn, addr = s.accept() 
- data = conn.recv(1024) 
- data = data.strip() 
-  
- print data 
- if data == '​exit':​ 
- break 
- except: 
- print sys.exc_info()[0] 
- finally:  
- if conn is not None: 
- conn.close();​ 
- conn = None 
- 
-s = None 
-try: 
- s = socket.socket(socket.AF_INET,​ socket.SOCK_STREAM) 
- s.bind(('​0.0.0.0',​ 4444)) 
- s.listen(1) 
- acceptConn(s) 
-finally: 
- if s is not None: 
- s.shutdown(1) 
- s.close() 
-</​code>​ 
-===== How to? ===== 
-參考[[https://​docs.python.org/​2/​library/​socket.html|python document]],在create socketc後做以下設定:​ 
-<code python> 
-s.setsockopt(socket.SOL_SOCKET,​ socket.SO_REUSEADDR,​ 1) 
-</​code>​ 
-這讓kernel知道我們可以重複使用TIME_WAIT的socket。 
- 
-=====    ===== 
----- 
-\\ 
-~~DISQUS~~ 
-