【问题标题】:Designing using fork() and TCP connection in C在 C 中使用 fork() 和 TCP 连接进行设计
【发布时间】:2013-01-14 09:22:08
【问题描述】:

我有一个关于如何设计以下系统的问题:

我的系统由多个监听环境的客户端组成。当超出音频阈值时,他们会将信息发送到服务器,该服务器有孩子在每个连接上监听。服务器需要来自所有客户端的信息来进行必要的计算。

当前服务器在 UNIX 中工作并且已经分叉了连接。他们独立工作。

我想做的是告诉父母(在服务器中)信息已经发送,现在是时候处理它了。我应该怎么做

我正在考虑可能的不同方法:

  1. 在 Unix 中使用signal()以某种方式告诉父母发生了什么事
  2. 转换为线程并使用一些等待和通知功能

信号更可取,但我不知道如何有效地做到这一点。因为在我的系统中可能会发生以下情况:

  • 如果所有客户端都成功地将信息发送到服务器的子级,我如何有效地告诉父级我已准备好?不知道/我不确定它将如何处理它们。
  • 服务器可能无法从所有客户端接收信息。因此,父母必须为所有孩子等待一段时间,但不能太久。所以我猜是某种计时器?

【问题讨论】:

  • 您确定要对任务执行此操作吗?看起来您更像是想使用线程。不幸的是,你的问题不是很清楚。
  • 我会添加更多信息,但问题已明确说明
  • 请指定操作系统,解决方案可能会有所不同。
  • @KillianDS 我明白为什么这有点含糊,我真的很犹豫在这里发布这个,因为我知道有些人会觉得它不相关,因为没有直接问题。这就是为什么我将其命名为设计问题。但请阅读整个问题。该协议在标题中说明。问题中也说明了通信。一台服务器,许多客户端。服务器有单独处理每个连接的子节点。客户端向服务器发送信息。就这么简单。我将添加更多文字来解释更多系统。
  • @vladmihaisima 问题中已经描述了操作系统

标签: c sockets tcp fork


【解决方案1】:

不要使用 fork,也不要使用信号。使用thread pool

【讨论】:

  • 嗯,看来我必须实现它。谢谢你说服我
【解决方案2】:

对于孩子和父亲之间的进程间通信的 Unix 域套接字怎么样?

http://en.wikipedia.org/wiki/Unix_domain_socket

一旦子进程通过TCP连接接收到数据,同样的数据会通过Unix Domain Socket转发给父进程,并立即通知父进程

【讨论】:

    猜你喜欢
    • 2012-03-24
    • 1970-01-01
    • 2012-10-04
    • 1970-01-01
    • 1970-01-01
    • 2011-05-17
    • 1970-01-01
    • 2020-10-01
    • 1970-01-01
    相关资源
    最近更新 更多