asynchronous gen_tcp

Vlad Dumitrescu <>
Tue Aug 24 21:25:41 CEST 2004

>  My biggest problem right now is that when B is waiting on
> gen_tcp:recv it  can't receive messages from C to send. B needs to
> work in a more async manner.  I seem  to remember seeing something
> like this at some point, but now I can't seem to find it.

I suppose your B process is created with {active, false}, if you use

If you don't use that option, then B will get messages like {tcp, Socket,
Data} whenever something comes from the client.

If there is a lot of traffic and you want to be able to tell the client to
slow down a little, you can use {active, once} that will deliver one packet
and then swithch to the passive state. By calling
inet:setopts(Socket,[{active, once}]) at an appropriate time, you can
restart this cycle.


More information about the erlang-questions mailing list