From af43060e1c93d5a4050a4730fecb0803753c8535 Mon Sep 17 00:00:00 2001 From: Case Duckworth Date: Tue, 11 Apr 2023 11:32:19 -0500 Subject: Update --- .dir-locals.el | 4 ++++ Makefile | 21 +++++++++++++++++++++ mailbox.scm | 9 +++++---- postcard.scm | 14 +++++++++++--- readme.txt | 12 ++++++++++++ 5 files changed, 53 insertions(+), 7 deletions(-) create mode 100644 .dir-locals.el create mode 100644 Makefile diff --git a/.dir-locals.el b/.dir-locals.el new file mode 100644 index 0000000..9c78ce8 --- /dev/null +++ b/.dir-locals.el @@ -0,0 +1,4 @@ +;;; Directory Local Variables -*- no-byte-compile: t -*- +;;; For more information see (info "(emacs) Directory Variables") + +((scheme-mode . ((geiser-scheme-implementation . chicken)))) diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..db1bb6c --- /dev/null +++ b/Makefile @@ -0,0 +1,21 @@ +# postcard + +CSC = csc +PREFIX = /usr +PROGS = postcard mailbox + +.SUFFIXES: +.SUFFIXES: .scm .o + +all: $(PROGS) + +.scm: + $(CSC) -o $@ $< + +.PHONY: install clean + +install: $(PROGS) + install -Dt $(DESTDIR)$(PREFIX)/bin $? + +clean: + -rm -f $(PROGS) *.o diff --git a/mailbox.scm b/mailbox.scm index 948804c..82eaaad 100644 --- a/mailbox.scm +++ b/mailbox.scm @@ -1,6 +1,7 @@ ;; server bit -(import udp) +(import udp + utf8) (define host "localhost") (define port 42069) @@ -9,11 +10,11 @@ (define s (udp-open-socket)) (udp-bind! s #f port) (let loop ((s s)) - (receive (len str) (udp-recv s 512) + (receive (len str host port) (udp-recvfrom s 512) (when (= len 0) (loop s)) - (display str) - (newline) + (print host ":" port "(" len ")\t" str) + (udp-sendto s host port (string-append "received: " str)) (loop s)))) (main) diff --git a/postcard.scm b/postcard.scm index 5e54178..7c1eed6 100644 --- a/postcard.scm +++ b/postcard.scm @@ -1,13 +1,21 @@ ;; client bit -(import udp +(import srfi-13 + udp + utf8 (chicken process-context)) -(define host "localhost") +(define host "95.216.214.66") (define port 42069) (define (main args) (define s (udp-open-socket)) - (udp-sendto s host port (apply string-append args))) + (udp-bind! s #f 0) ; automatically allocate one + (udp-sendto s host port (string-join args " ")) + (let loop ((s s)) + (receive (len str host port) (udp-recvfrom s 512) + (when (= len 0) + (loop s)) + (print host ":" port "\t" str)))) (main (command-line-arguments)) diff --git a/readme.txt b/readme.txt index a3b0ad1..96f2933 100644 --- a/readme.txt +++ b/readme.txt @@ -12,3 +12,15 @@ that's it ... for now. oh, the port is 42069 for the time being and uh, it's just over localhost byeeeee (for a description of the protocol, see ) + +--- + +programs + +server, listens to ports and handles incoming postcards: postoffice + +client: +- send: postcard +- check: postbox +- admin: postmaster + -- cgit 1.4.1-21-gabe81