2011-05-30 127 views
4

我打算使用套接字(本地TCP)在两个进程(本地运行)之间进行通信。一个进程将充当服务器,但两个进程都异步地向对方发送消息。我应该在进程的整个生命周期中保持套接字连接的打开状态,还是为每个请求重新连接?IPC:为每个请求连接或保持套接字打开?

如果我保持本地套接字打开,可能会发生任何问题吗?

+0

插座类型?我猜测tcp/ip。 – 2011-05-30 13:30:56

+0

是的。这是一个本地TCP套接字[编辑问题] – 2011-05-30 13:32:00

回答

5

保持插座处于打开状态。

它是一个更简单的选项,您不需要为打开新套接字(从客户端的角度)或接受新客户端(从服务器的角度)开销。

+0

+1。一个警告是在协议中包含消息长度。 – 2011-05-30 13:36:55

+0

..或使用其他一些协议,允许通过像TCP这样的流媒体服务发送'消息'。我同意'保持套接字打开' - 在消息传递之前进行三次握手,然后进行四次终止握手,这是减慢应用程序速度的一种好方法,如果在具有高延迟网络连接的不同计算机上。 – 2011-05-30 13:53:48

+0

@Nikolai N Fetissov - 我会推荐TCP消息的典型方法:用新行(CR和/或LF)分隔的人类可读消息。 [不太确定这是否适用于这个问题,因为我不知道他想传达什么信息]。 – 2011-05-30 14:13:24

1

如果它只是一个客户端,那么你应该保持打开的套接字,但在出现错误的情况下可以重新连接(例如,用户可以重置网络接口,因此连接不保证活着)。如果您有多个客户端,则在一定时间的非活动超时后使用断开连接。这将让你摆脱不活动,挂起或“迷失”(那些过去的,但没有关于套接字关闭的信号)客户端。

相关问题