[erlang-questions] No timeout on connect
Gamoto
gamoto@REDACTED
Mon Apr 6 11:30:56 CEST 2009
I corrected my code as you said. connect is not blocking for me !
After 5-6 seconds, I have the message "Error on connect ! Timeout
What is wrong ?
-module(client).
-export([start/0,wait/1]).
start()->
case gen_tcp:connect("localhost",1688,[binary, {packet, 0}]) of
{ok,Socket}->
io:format("Socket established~n"),
loop(Socket);
{error,Reason} -> io:format("Error on connect ! ~s~n",[Reason])
end.
loop(Socket)->
gen_tcp:send(Socket,"1234"),
wait(10000),
loop(Socket).
wait(Timeout)->
receive
after Timeout->
0
end.
>connect() is always blocking, that's why you can provide a timeout.
>
>If, however, you actually mean a connect that will continue to retry
>failed connections indefinitely, then no, you'd have to implement that
>behaviour yourself.
>
>Cheers,
>
>B
>
>Gamoto wrote:
>> I run on Windows server 2003
>> There is no parameter for making a "blocking" connect ?
>> John
>>> Gamoto wrote:
>>>> What is wrong in this code ? When I run it, without a listening server, after a few second, I have a timeout error !!
>>>> infinity parameter is not correctly defined ?
>>> Which OS and Erlang release are you using? When I try that on R12B-5
>>> for both Linux and Windows it returns quickly as well, but the Reason is
>>> 'econnrefused' which is what I'd expect to see when there's no server there.
>>>
>>> The timeout parameter is how long the connection attempt will wait for a
>>> response of any kind, be it success, refusal or some other kind of
>>> failure. Setting it to 'infinity' (the default, by the way, so you
>>> don't need to explicitly set it) doesn't mean that it will keep retrying
>>> a failed connection indefinitely.
>>>
>>> Cheers,
>>>
>>> Bernard
>>>
>>
>
More information about the erlang-questions
mailing list