2009-08-05 123 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您的主要應用程序交談。您可以實現一個短頭來解決這個小應用程序的端點問題。您的主應用程序將在一個通信點上看到所有內容。

它也將解決您的問題,很好地提取寫入。