X0_0X
2
等保中級測評師
CICSA
在防火墻沒有數據連接的情況下在五秒左右會自動將TCP連接斷開,有長連接的情況下則不會斷開,如不想讓防火墻TCP連接自動斷開可以設置TCP長連接心跳機制或者設置socket的keepalive為true,這樣即使沒有數據,tcp/ip的底層也會保持連接。
設置TCP長連接心跳機制方法是直接修改套接字選項,配置文件如下:
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1) client.setsockopt(socket.SOL_TCP, socket.TCP_KEEPIDLE, 600) # 覆蓋tcp_keepalive_time 表示多久時間未通信后進行探測 client.setsockopt(socket.SOL_TCP, socket.TCP_KEEPCNT, 10) # 覆蓋tcp_keepalive_probes 探測次數 client.setsockopt(socket.SOL_TCP, socket.TCP_KEEPINTVL, 30) # 覆蓋tcp_keepalive_intvl 每次探測的超時時間 client.connect((host, port))
推薦文章