I am trying to understand tcp connections between a browser and a web server. I have a web server running on my local machine, and can browse to it just fine, as expected, usin
Without the fork
, socat
will accept a single TCP connection, forward data bidirectionally between the two endpoints for as long as that connection remains open, then exit. You can see this yourself easily:
socat
in one terminal windowsocat
instance.socat
is not listening for new connections anymore: it has moved on to servicing the one it already got.socat
will exit as the connection is closed.The fork
option just makes it fork a new child to process the newly accepted connection while the parent goes back to waiting for new connections.
socat
's use of fork()
rather than something more sophisticated like preforking or connection pooling is the reason you wouldn't want to implement high-performance middleware with socat
!