发送消息保证后,是否与TCP套接字断开连接?

时间:2017-12-25 05:44:50

标签: sockets go tcp

我无法找到关于此的更多信息,但我有一个简单的代码序列,如:

// does it wait on Write() until successful handshake or attempt failure
// or just continue on straight away?
net.conn.Write(buffer[1:60])
conn.Close()

这是否可以保证在调用Close之前传递到客户端/服务器?或者在发送消息后调用Close,并且如果它们太慢而无法及时完成,可能会在握手期间关闭连接?

2 个答案:

答案 0 :(得分:4)

  

这是否可以保证在调用Close之前传递给客户端/服务器?

没有

  

或者在发送消息后调用Close

write和close都排队等待异步执行。

  

并且如果它们太慢而无法及时完成,可能会在握手期间关闭连接?

Close将为连接排队关闭。如果近距离握手花费的时间太长,则会重置连接。

答案 1 :(得分:-1)

没有什么可以保证交付" (如果连接的另一端崩溃了怎么办?)。但是,Write是一个阻止调用,如果您检查返回的error值,则至少可以在调用Close之前知道写入是否成功。