Pipe between sockets
I've got a C++ server that acts as a mirror. What gets in gets out to a different socket. Right now, it reads the socket into a buffer and writes it into the other socket. I want to improve the throughput.
I've read st开发者_开发百科uff about sendfile()
and splice()
, but it seems limited to "file-to-socket" transfers. Maybe a simple pipe()
between sockets would work. What do you recommend?
A portable solution would be perfect, but it's fine if it's Linux-only.
You can setup a named pipe in linux. Multiple processes could read/write from this. Check out this link: http://www.cs.fredonia.edu/zubairi/s2k2/csit431/more_pipes.html.
Also as mentioned above using netcat should do the trick (http://netcat.sourceforge.net/).
I checked nc(netcat)
command as mentioned by Ralu
in his comment and it works between two sockets when used with pipe :)
I used the below command :
netcat -l 5556 | netcat localhost 5557
I sent data to the port 5556(a python client) set up by the first nc command and made a server(small python code) listening on port 5557.
I could recv data from port 5557
精彩评论