1
goofool 2020 年 7 月 29 日
那就不是 TCP 协议了
|
2
nacosboy 2020 年 7 月 29 日
你可以让 client 主动发送个信号给 server,server 收到信号后 panic,就不会发 FIN 了
|
3
ChristopherWu 2020 年 7 月 29 日
为什么要这么做?
|
4
Ariver 2020 年 7 月 29 日
先搞明白 tcp/ip
|
5
arthurblake 2020 年 7 月 29 日
@barryzxb 优秀
|
6
heijiaotuan 2020 年 7 月 29 日
客户端做一个假断开, 并且标记为可重用状态, 下一次有人用再断开上一个 socket.
|
8
labulaka521 OP |
9
tempdban 2020 年 7 月 29 日 via Android
搜索了一下,golang 貌似可以半关闭的。
https://stackoverflow.com/questions/23879000/net-tcpconn-allowing-write-after-fin-packet 这里您要关注一下,client 半关闭后收到 server 的 payload 会怎么处理,有可能是 rst,也有可能可以正常处理。 |
11
labulaka521 OP 使用 CloseWrite 即可
|
12
labulaka521 OP @goofool 可能你没理解我什么意思
别吵 此贴 终止 别回复了 |
14
LANB0 2020 年 7 月 29 日
C 可以配置 SO_LINGER 来强制 reset,golang 没理由不能
|
15
ChristopherWu 2020 年 7 月 29 日
@labulaka521 一个问题,先要有目标场景啊。有可能你说的做法并不是解决你这个问题的最佳办法。
如果你单纯只是想知道怎么做,直接说只是好奇,就好了——这种场景下,方法就更多了。 |
16
wangritian 2020 年 7 月 29 日
好奇使用场景,学习一下
|
17
also24 2020 年 7 月 29 日
|
18
labulaka521 OP |
19
labulaka521 OP @also24 学习了
|
20
labulaka521 OP @also24 这个真有趣 hhh
|
21
Les1ie 2020 年 7 月 29 日
场景有可能是大范围的 TCP 扫描 半开放的扫描只需要发送 syn 等待接收 ack,如果本地关闭了连接,内核可能会发送一个 fin,占用带宽,所以需要阻止系统内核发送 fin
|