Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File N:1文件描述符?_File_Sockets_File Descriptor - Fatal编程技术网

File N:1文件描述符?

File N:1文件描述符?,file,sockets,file-descriptor,File,Sockets,File Descriptor,是否有可能将N个文件描述符视为1个文件描述符,以便在N个文件描述符中的任何一个(即从N个套接字)上接收的数据将转发回单个文件描述符上的调用API,从而隐藏它实际上可能来自不同文件描述符的事实?是否也可以对写入进行类似的抽象(但返回到正确的第n个文件描述符)?由于您标记并使用单词socket,我假定您的数据来自网络路径,并且您实际上希望通过同一套接字读取多个源 如果您使用的是TCP/IP套接字,那么您已经有了一个方案,该方案使用UDP套接字侦听多个源可以向其发送数据的本地端口 您不能有这样一个TC

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

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

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

您不能有这样一个TCP套接字,但是
select
API在所有标准实现中都可用,它允许您打开多个TCP侦听套接字,每个源一个,然后对整批进行选择。您将无法在此处“隐藏”源

如果您所追求的是抽象,那么更好的办法是编写一个小型应用程序来管理多个通信端点,并通过IPC与您的主要应用程序进行对话。您可以实现一个简短的头,以解决这个小应用程序的端点问题。然后,您的主应用程序将通过一个通信点查看所有内容

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

您所说的“正确的第n个”描述符是什么意思?“类似抽象”意味着写入将指向所有描述符,而不是“正确”的描述符。否则,您将尝试构建muxer/demuxer对,但这需要一种将N嵌入读/写块的方法。