File: remote.l

package info (click to toggle)
euslisp 9.27%2Bdfsg-7
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye
  • size: 55,344 kB
  • sloc: ansic: 41,162; lisp: 3,339; makefile: 256; sh: 208; asm: 138; python: 53
file content (57 lines) | stat: -rw-r--r-- 1,454 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
(defun reval (s)
   (print (read s)))

(defun remote-port ()
  (let* ((port 2048) (sp)
	 (sa (make-socket-address
			:domain af_inet 
			:host (unix:gethostname)
			:port port)) )
    (setq *remote-port* nil)
    (dotimes (i 1024)
	(setq sp (make-socket-port sa))
	(when (derivedp sp socket-port)
	   (warn "listening on ~d~%" (send sa :port))
	   (setq *remote-port* sp)
	   (return t))
	(send sa :next-port)
	(send sa :port))
    (unless *remote-port*  (warn "all ports engaged"))
    (eval (macroexpand '(def-async *remote-port* (s)
	 (let ((ns (make-server-socket-stream s)))
	     (push ns *server-streams*)
	     (def-async ns reval))) ))
))

(defun make-server-port (&optional (port 2051))
  (let* ((sp)
	 (sa (make-socket-address
			:domain af_inet 
			:host (unix:gethostname)	;this host
			:port port)) )
    (setq *server-port* nil)
    (setq *server-streams* nil)
    (dotimes (i 100)
	(setq sp (make-socket-port sa))
	(when (derivedp sp socket-port)
	   (warn "listening on ~d~%" (send sa :port))
	   (setq *server-port* sp)
	   (return t))
	(send sa :next-port)
	(send sa :port))
    (unless *server-port* 
	(warn "all ports engaged")
	(return-from make-server-port nil))
    (def-async *server-port* (s)
	 (let ((ns (make-server-socket-stream s)))
	     (push ns *server-streams*) ))
))

(defun make-client-connection (host port)
    (make-client-socket-stream 
	 (make-socket-address
			:domain af_inet 
			:host host 
			:port port)))