调用 close 函数,设置了 SO_LINGER 为 true

调用 close 函数,设置了 SO_LINGER 为 true
如果设置 SO_LINGER 为 true,linger 设置为 0,当调用 socket.close() 时, close 函数会立即返回,同时丢弃缓冲区内所有数据并立即发送 RST 包重置连接。在 SO_LINGER 那一节有详细介绍这个参数的含义。

node2:/root/test#cat t3.py 
import socket
import time
import struct
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_LINGER,struct.pack('ii', 1, 0))

s.connect(("192.168.137.2",8080))
s.close()
node2:/root/test#vim t3.py ^C
node2:/root/test#python t3.py 

node2:/tmp/newcx#tcpdump -S -i eth1 '((tcp) and  (port 8080) )'
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes
11:10:34.122923 IP node2.42450 > node1.webcache: Flags [S], seq 2263623020, win 14600, options [mss 1460,sackOK,TS val 282075817 ecr 0,nop,wscale 7], length 0
11:10:34.123171 IP node1.webcache > node2.42450: Flags [S.], seq 3165131511, ack 2263623021, win 14480, options [mss 1460,sackOK,TS val 4294825801 ecr 282075817,nop,wscale 6], length 0
11:10:34.123185 IP node2.42450 > node1.webcache: Flags [.], ack 3165131512, win 115, options [nop,nop,TS val 282075817 ecr 4294825801], length 0
11:10:34.123448 IP node2.42450 > node1.webcache: Flags [R.], seq 2263623021, ack 3165131512, win 115, options [nop,nop,TS val 282075818 ecr 4294825801], length 0
发布了3883 篇原创文章 · 获赞 120 · 访问量 360万+

猜你喜欢

转载自blog.csdn.net/zhaoyangjian724/article/details/105123970