#!/usr/bin/newlisp

# client-server.lsp - benchmark
# requires newLISP v 9.0.0 or later

(set 'DATA "Hello there sailor\n");
(set 'bufferSize (length DATA))


(define (server port)
	(set 'listen (net-listen port))
	(set 'connection (net-accept listen))
	(set 'N 0)
	(while (net-receive connection 'buff bufferSize)
		(inc 'N (length buff))
		(net-send connection buff))
	(net-close connection)
	(net-close listen)
	(println "server processed " N " bytes"))


(define (client port n)
	(set 'connection (net-connect "127.0.0.1" port))
	(dotimes (x n)
		(net-send connection DATA)
		(net-receive connection 'buff bufferSize)
		(if (!= buff DATA) (println "Received different message: " buff)))
	(net-close connection))

(set 'n (integer (main-args 2)))

(fork (server 100001))
(sleep 100)
(client 100001 n)
(exit)
;; eof


syntax highlighting with newLISP and syntax.cgi