【问题标题】:N:1 file descriptors?N:1 文件描述符?
【发布时间】:2009-08-05 12:55:29
【问题描述】:

是否可以让程序将 N 个文件描述符视为 1 个文件描述符,以便在 N 个文件描述符中的任何一个(即来自 N 个套接字)上接收到的数据将被转发回单个文件描述符上的调用 API ,隐藏它实际上可能来自不同的文件描述符的事实?是否也可以类似地抽象写入(但返回到正确的第 N 个文件描述符)?

【问题讨论】:

  • “正确的第 N 个”描述符是什么意思? “类似抽象”意味着写入将转到所有描述符,而不是“正确”描述符。否则,您正在尝试构建一个复用器/解复用器对,但这需要一种将 N 嵌入到读/写块中的方法。

标签: file sockets file-descriptor


【解决方案1】:

由于您标记并使用单词socket,我认为您的数据来自网络路径,并且您实际上希望通过同一个套接字读取多个源。

如果您正在使用 TCP/IP 套接字,那么您已经有了该方案,其中 UDP 套接字在本地端口上侦听多个源可以向其发送数据。

你不能有这样一个 TCP 套接字,但是select API 在所有标准实现上都可用,让你打开多个 TCP 侦听套接字,每个源一个,然后在很多。您将无法在此处“隐藏”源代码。

如果抽象是您所追求的,更好的想法是编写一个小型应用程序来管理多个通信端点并通过IPC与您的主要应用程序通信强>。您可以实现一个短标题来处理这个小应用程序的端点。然后,您的主要应用程序将通过一个通信点查看所有内容。

它还可以很好地解决您抽象写入的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-25
    • 1970-01-01
    • 2023-04-10
    相关资源
    最近更新 更多