Hey guys,
Thanks a lot for your quick answers!
My ping method now:
(define (ping hostname port-no personalip) (define t (thread
(lambda () (with-handlers ((exn:fail:network? (lambda (x) (begin
(displayln (string-append hostname : (number-string port-no)
NOO)) #f;(displayln (exn-message x)
(define-values (in out) (tcp-connect hostname port-no)) (write
'ping out) (write personalip out)
(flush-output out) (display (string-append hostname :
(number-string port-no) )) (displayln (read in))
(close-input-port in) (close-output-port out)
#t (sync/timeout 0.01 t) (kill-thread t))
+
This is the result when I do a multicast from 192.168.1.0 to 192.168.1.200. ( a
lot of these don't exist and that's why tcp-connect was taking ages to throw an
error.) Those returning a NO are existing network nodes where no server is
running. Pong is the answer from the server running on my laptop.
(multicast-ping 192.168.1.100 8080 0 200)192.168.1.0:8080
NOO192.168.1.105:8080 NOO192.168.1.108:8080
pong---Multicast finished!
+
It's still test-code but it's working fine now, maybe the timout time is too
small but now it works well!
Greetings,Nicolas
Subject: Re: [racket-dev] Implementation question
From: matth...@ccs.neu.edu
Date: Sat, 19 Apr 2014 09:25:27 -0400
CC: nicocarra...@hotmail.com; dev@racket-lang.org
To: laurent.ors...@gmail.com
Let me recommend events instead:
#lang racket
;; Nat - Void ;; wait for t seconds before connecting to google.com, then
stop(define (do-work t) (thread (lambda () (with-handlers
((exn:fail:network? (lambda (x) (displayln (exn-message x) (sleep t)
(define-values (in out) (tcp-connect google.com 80))'done
;; returns #f if 3 seconds pass w/o the thread shutting down (sync/timeout 3
(do-work (random 6)))
On Apr 19, 2014, at 8:34 AM, Laurent wrote:One simpler possibility is to use
`tcp-connect/enable-break` and run a timer in parallel to break it after a
shorter delay.
For example:
(define-values (in out) (values #f #f))
(define connect-thread
(thread
(λ()(set!-values (in out)
(tcp-connect www.google.com 80)
(sleep 3)
(unless in
(displayln Connection not established. Breaking thread.)
(break-thread connect-thread))
The timer can also be place into its own thread if you need to set up several
connections in parallel.
Hope this helps,Laurent
On Thu, Apr 17, 2014 at 6:48 PM, nicolas carraggi nicocarra...@hotmail.com
wrote:
Hello,
I am actually using Racket/tcp for a project in Racket.I'm creating a
peer-to-peer network but now I encountered a small problem.For a multicast I
want to connect with each server on the same network.
For this I use tcp-connect, but when i try to connect to an ip address which
is not hosting a server, throwing the error only happens after more than 1
minute. So I would like to use a modified tcp-connect with a smaller time-out.
Where can I find the implementation of tcp-connect?
I already found tcp.rkt but there it gets the tcp-connect method from
'#%network but I can't find this one...
Greetings!Nicolas
_
Racket Developers list:
http://lists.racket-lang.org/dev
_
Racket Developers list:
http://lists.racket-lang.org/dev
_
Racket Developers list:
http://lists.racket-lang.org/dev