Version française
Home     About     Download     Resources     Contact us    
Browse thread
[Caml-list] TIME-OUT
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Gerd Stolpmann <info@g...>
Subject: Re: [Caml-list] TIME-OUT
On Wed, 2003-02-19 at 10:08, altavillasalvatore@libero.it wrote:
> Hi All,
> 
> My problem is this:
> 
> let risposta byte =
> let pdu_length = String.length byte in
> let my_name =Unix.gethostname() in
> let my_entry_byname = Unix.gethostbyname my_name in
> let my_addr = my_entry_byname.Unix.h_addr_list.(0) in
> let sockaddr = Unix.ADDR_INET(my_addr, 161) in
> let sock = Unix.socket Unix.PF_INET Unix.SOCK_DGRAM 0 in
> let sock1 =  Unix.ADDR_INET(my_addr, 12346) in
> Unix.bind sock sock1;
> let w = Unix.sendto sock byte 0 pdu_length [] sockaddr in
> let max = 512 in
> let buf=ref (String.create max) in
> let len, addr =Unix.recvfrom sock !buf 0 max [] in
> Unix.close sock;
> let answer = String.sub !buf 0 len in
> answer
> 
> I would want to introduce a Timeout for input operations (a floating-point value representing a time in seconds) of 15 second.

Unix.select is your friend.

let rdlist,_,_ = Unix.select [sock] [] [] 15.0 in
if rdlist = [] then raise Timeout;

Otherwise, rdlist has one member: sock, and the socket has received a
datagram.

Gerd
-- 
------------------------------------------------------------
Gerd Stolpmann * Viktoriastr. 45 * 64293 Darmstadt * Germany 
gerd@gerd-stolpmann.de          http://www.gerd-stolpmann.de
------------------------------------------------------------

-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners