2013-07-02 59 views
1

我試圖實現零拷貝機制,即與TransmitFile() API相反的功能。零拷貝接收函數

但我不知道如何在內核中註冊緩衝區。下面是我想要做的實行零拷貝的細節:

  1. 我們將在我們的客戶端緩存服務器接收大量的數據,我這裏有一個疑問,也是氣象數據將來到socket緩衝區(客戶端)或首先它會進入NIC緩衝區,請清除此疑問。

  2. 現在來自套接字緩衝區,我希望將數據直接複製到內核緩衝區,然後將文件複製到光盤中,而無需進行讀寫系統調用,即無需切換上下文。

  3. 數據必須僅在內核空間內直接移動到內核緩衝區。

是否有任何API或一些方法來實現這一目標?還有其他建議嗎?

套接字在TCP/IP連接上。

+1

你在說哪個內核?什麼是「TransmitFile()API」?一些更多的細節會很好。 – Lstor

+1

要麼你把第三方的東西歸咎於C++本身,要麼你忘記了我們並不是和你一樣在同一個項目上工作。打開你的想法!告訴我們你在說什麼。 –

+0

什麼是您的硬件? – lucasg

回答

1

不幸的是,沒有任何API用於接收。但您可以嘗試使用ZwWrite()。

+1

是的,它可能會有所幫助...但它對於像我這樣的初學者來說很難理解.BTW thanx –

+1

歡迎...繼續嘗試 – 2013-07-18 09:59:08