2009-08-05 94 views
1

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

+0

你是什么意思的“正确的第N”描述符? “类似抽象”将意味着写入将传递给所有描述符,而不是“正确”描述符。否则,您正在尝试构建一个复用器/分离器对,但这需要将N嵌入到读/写块中的方法。 – 2009-08-05 04:35:07

回答

3

由于您标记并使用了socket这个词,因此我推测您的数据是通过网络路径传递的,而您实际上想要通过同一套接字读取多个来源。

如果您正在使用TCP/IP套接字,则您已经拥有该方案UDP套接字侦听多个数据源可以发送数据的本地端口。

你不能有这样的TCP套接字,但是select API适用于所有标准的实现,让你打开多个TCP监听套接字,每个源一个,然后做一个选择上的一大堆。你将无法在这里“隐藏”源代码。

如果抽象是你是什么之后,一个更好的想法是写一个小的应用程序将管理此多种通信端点和超过IPC您的主要应用程序交谈。您可以实现一个短头来解决这个小应用程序的端点问题。您的主应用程序将在一个通信点上看到所有内容。

它也将解决您的问题,很好地提取写入。