gen_tcp:send/2 but not gen_tcp:send/3 (3rd arg = timeout)
Matthias Lang
matthias@REDACTED
Thu Feb 6 16:39:33 CET 2003
Scott Lystig Fritchie writes:
> gen_tcp:recv() comes in two flavors: gen_tcp:recv/2 (no timeout) and
> gen_tcp:recv/3 (third argument = timeout). But there doesn't appear
> to be a version of gen_tcp:send() that includes a timeout.
>
> Looking into prim_inet.erl, there is no ability to specify a timeout.
> :-( I was hoping for an undocumented feature.
There _is_ an undocumented feature which does more or less
what you want. You can specify a {send_timeout, N} in the socket
options, i.e. either when you create the socket or later:
gen_tcp:connect(Host, Port, [{send_timeout, 0}])
See also:
http://www.erlang.org/ml-archive/erlang-questions/200209/msg00076.html
There's a catch or two, though. For a start, it's not documented, so
it's probably not included in any test suite. Second, the behaviour on
timeout is a little odd. IIRC, send-on-full-socket returns an error
the first time you call it, but not if you then call it again. I'm a
bit hazy about the details, in my case I just want to nuke clients
who can't keep up.
Matthias
More information about the erlang-questions
mailing list