gpt4 book ai didi

sockets - 当一个套接字在 Go 中断开连接时,我能知道它是好还是坏关闭吗?

转载 作者:IT王子 更新时间:2023-10-29 02:23:20 26 4
gpt4 key购买 nike

假设我打开一个到服务器的连接,例如:

conn, _ := net.DialTimeout("tcp", "127.0.0.1:2121", 10000000)

然后我做一些事情然后打电话

conn.Close()

那是选项 1。但是如果我不在 conn 上调用 Close 而只是调用会怎样

os.Exit(1)

保持连接仍然打开。那是选项 2。即我正在尝试模拟用户上传文件并到达结尾并真正关闭连接...或结束正在写入套接字但从未正式关闭它的流。

回到服务器端,有没有办法告诉发生了什么事件?好的 Close 还是坏的?

net.Listener 是否有某种回调让我知道。因为当我打电话时:

n, err := serverConn.Read()

无论是好是坏,我都会收到 EOF 错误。

最佳答案

这取决于操作系统。如果您的进程以未关闭的套接字退出,那么您所在的那个显然会为您正常关闭,因此它等同于“好”。使用另一种,您将获得 ECONNRESET。

关于sockets - 当一个套接字在 Go 中断开连接时,我能知道它是好还是坏关闭吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36440850/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com