Труба между розетками - PullRequest
       16

Труба между розетками

6 голосов
/ 08 октября 2011

У меня есть сервер C ++, который действует как зеркало.То, что входит, выходит в другую розетку.Прямо сейчас он читает сокет в буфер и записывает его в другой сокет.Я хочу улучшить пропускную способность.

Я прочитал материал о sendfile() и splice(), но это кажется ограниченным передачей "из файла в сокет".Может быть, простой pipe() между сокетами подойдет.Что вы порекомендуете?

Переносное решение было бы идеально, но хорошо, если оно только для Linux.

Ответы [ 2 ]

4 голосов
/ 08 октября 2011

Вы можете установить именованный канал в Linux. Несколько процессов могут читать / писать из этого. Проверьте эту ссылку: http://www.cs.fredonia.edu/zubairi/s2k2/csit431/more_pipes.html.

Также, как упоминалось выше, использование netcat должно сработать (http://netcat.sourceforge.net/).

0 голосов
/ 09 октября 2011

Я проверил команду nc(netcat), как упомянуто Ralu в его комментарии, и она работает между двумя сокетами при использовании с pipe:)

Я использовал следующую команду:


netcat -l 5556 | netcat localhost 5557

Я отправил данные на порт 5556 (клиент Python), настроенный с помощью первой команды nc, и сделал сервер (небольшой код Python), прослушивающий порт 5557.

Я мог бы получить данные из порта 5557

...