【问题标题】:IPC: Connect for each request or keep socket open?IPC:为每个请求连接还是保持套接字打开?
【发布时间】:2011-05-30 13:20:32
【问题描述】:

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

如果我保持本地套接字打开,是否会出现任何问题?

【问题讨论】:

  • 套接字类型?我猜是 tcp/ip。
  • 是的。这是一个本地 TCP 套接字 [已编辑问题]

标签: java c++ sockets ipc


【解决方案1】:

保持套接字打开。

这是一个更简单的选项,并且您不会产生打开新套接字(从客户端的角度来看)或接受新的客户端(从服务器的角度来看)的开销。

【讨论】:

  • +1。一个警告是在协议中包含消息长度。
  • ..或使用其他一些允许通过 TCP 等流服务发送“消息”的协议。我同意“保持套接字打开” - 在可以传达消息之前进行三次握手,然后进行四次终止握手,这是减慢应用程序速度的好方法,尤其是。如果在具有高延迟网络连接的不同机器上。
  • @Nikolai N Fetissov - 我会推荐 TCP 消息的典型方法:人类可读的消息由新行分隔(CR 和/或 LF)。 [不确定这是否适用于这个问题,因为我不知道他想表达什么]。
【解决方案2】:

如果它只是一个客户端,那么您应该保持套接字打开,但准备好在出现错误时重新连接(例如,用户可以重置网络接口,因此不能保证连接是活动的)。如果您有很多客户端,请在一定时间不活动超时后使用断开连接。这将让您摆脱不活动、挂起或“丢失”(那些已经去世但没有关于套接字关闭的信号)客户端。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-03
    • 1970-01-01
    • 1970-01-01
    • 2011-05-04
    • 2018-07-23
    • 1970-01-01
    相关资源
    最近更新 更多