sockets - 进程终止时是否有必要关闭 gen_tcp 连接?

标签 sockets erlang gen-tcp

我想我的问题相当简单。

我想知道在即将终止的进程拥有的套接字上使用 gen_tcp:close/1 是否有任何意义。连接自动关闭,并向另一端连接的进程返回 {tcp_close, Socket} ,就像调用 close 时一样,所以我猜测效果是相同的,只有当连接必须在终止前的某个时间关闭时才需要 close

这是正确的吗?或者有什么理由让我即使在进程即将终止时也应该尝试在套接字上使用 close

监听套接字或者对方连接的进程不是Erlang进程时有什么区别吗?

最佳答案

没有必要,因为正如您所观察到的,这会在退出拥有进程时自动发生。

无论如何,我通常都会努力这样做,以防万一我以后更改代码时进程不会在同一点退出。例如,打开一个套接字,读取数据,然后进行巨大的计算。如果计算量很大,会使套接字长时间打开。

很确定我曾经遇到过这种情况,但我确信如果我总是在有意义的最早时刻显式关闭我的套接字,我就不会遇到这种情况。

关于sockets - 进程终止时是否有必要关闭 gen_tcp 连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23412389/

相关文章:

java - 使用 gen_tcp :send doesn't get sent until the socket is closed 的消息

c# - 如何通过主机中的软件中止已建立的连接的消息找到 SocketException 的原因和原因?

c - 将数据传输到工作线程的回调或从工作线程的回调传输数据

c++ - 如何为 select() 监控的每个套接字设置不同的超时时间?

list - 在 Erlang 中创建列表列表

sockets - Erlang:使用 sockets/gen_tcp 连接到 API

mysql - 通过socket与mysql交互

emacs - 设置Emacs以对Erlang进行编程

memory - erlang 是否以任何巧妙的方式实现了记录复制和修改?

Erlang gen_tcp 是累积接收到的数据