1 | (import (chicken format) |
---|
2 | zmq srfi-18) |
---|
3 | |
---|
4 | ;; server keypair |
---|
5 | (define-values (spk ssk) |
---|
6 | (curve-keypair)) |
---|
7 | |
---|
8 | ;; client keypair |
---|
9 | (define-values (cpk csk) |
---|
10 | (curve-keypair)) |
---|
11 | |
---|
12 | (define (spin-server) |
---|
13 | (thread-start! |
---|
14 | (lambda () |
---|
15 | (let ((socket (make-socket 'rep))) |
---|
16 | (socket-option-set! socket 'curve/server 1) |
---|
17 | (socket-option-set! socket 'curve/secretkey ssk) |
---|
18 | (printf "Server socket setup!~n") |
---|
19 | (bind-socket socket "tcp://*:5050") |
---|
20 | (let ((msg (receive-message* socket))) |
---|
21 | (printf "Received ~a, responding.~n" msg) |
---|
22 | (send-message socket "pong!") |
---|
23 | (close-socket socket)))))) |
---|
24 | |
---|
25 | (define (hit-server msg) |
---|
26 | (let ((socket (make-socket 'req))) |
---|
27 | (socket-option-set! socket 'curve/serverkey spk) |
---|
28 | (socket-option-set! socket 'curve/secretkey csk) |
---|
29 | (socket-option-set! socket 'curve/pubkey cpk) |
---|
30 | (connect-socket socket "tcp://192.168.0.7:5050") |
---|
31 | (send-message socket msg) |
---|
32 | (printf "Sent message, waiting for response...~n") |
---|
33 | (printf "Got response: ~a~n" (receive-message* socket)) |
---|
34 | (close-socket socket))) |
---|