ping.rkt
#lang racket/base

(require "later.ss" racket/tcp racket/class)

(define later (make-later 1))

(define (listen db)
   (thread
    (λ ()
      (let ((listener (tcp-listen 12453 4 #t)))
        (let loop ()
          (let-values (((input output) (tcp-accept/enable-break listener)))
            (close-input-port input)
            (close-output-port output))
          (send db set-db-modified!))))))

(define ping
   (later
    (λ ()
      (with-handlers
       ((exn:fail:network? (λ (e) (void))))
       (let-values (((input output) (tcp-connect "localhost" 12453)))
         (close-input-port input)
         (close-output-port output))))))

(provide ping listen)