我有一臺充當鏡像的C++服務器。進入的內容出現在不同的套接字上。現在,它將套接字讀入緩衝區並將其寫入另一個套接字中。我想提高吞吐量。插座之間的管道
我read stuff約sendfile()
和splice()
,但它似乎僅限於「文件到套接字」傳輸。也許插座之間的一個簡單的pipe()
將工作。你有什麼建議?
便攜式解決方案將是完美的,但如果僅限於Linux,那很好。
我有一臺充當鏡像的C++服務器。進入的內容出現在不同的套接字上。現在,它將套接字讀入緩衝區並將其寫入另一個套接字中。我想提高吞吐量。插座之間的管道
我read stuff約sendfile()
和splice()
,但它似乎僅限於「文件到套接字」傳輸。也許插座之間的一個簡單的pipe()
將工作。你有什麼建議?
便攜式解決方案將是完美的,但如果僅限於Linux,那很好。
你可以在linux中設置一個命名管道。多個進程可以從中讀取/寫入。看看這個鏈接:http://www.cs.fredonia.edu/zubairi/s2k2/csit431/more_pipes.html。
也如上所述使用netcat應該做的伎倆(http://netcat.sourceforge.net/)。
據我所知(根據BSD源文件), 'nc'使用8192字節的緩衝區,這基本上是我目前的解決方案。 –
我可能會考慮使用命名管道並對其進行基準測試,但即使FIFO文件是基於RAM的,我也無法看到它如何比簡單的內存複製更快。 –
我檢查nc(netcat)
命令由Ralu
在他的評論中提及,並與管:)
我用下面的命令一起使用時它的工作原理兩個插槽之間:
netcat -l 5556 | netcat localhost 5557
我發送數據到端口5556(一個python客戶端)設置由所述第一NC指令和由服務器(小Python代碼)監聽端口5557.
我可以從端口5557接收數據
當然,但問題不是關於做它的可能性,而是關於優化它。 –
這可能有些用處http://unix.stackexchange.com/questions/9593/can-splice-tee-be-made-to-work-with-sockets-而不僅僅是管道 – Arunmu
可能你可以使用相同的端口插座! – Arunmu
通過管道傳輸數據的另一個鏈接:) http://markmail.org/thread/4cils4zyoxtrq3zu – Arunmu