;;; -*- Mode:LISP; Package:TCP; Base:10; Readtable:ZL -*- (defun accept-one (remote-address remote-port) (let (socket normalp) (unwind-protect (let ((sa (tcp:make-socket-address :port 0 :internet-address *my-internet-address*))) (setq socket (tcp:open-socket :address sa :keepalive t :listen-p t)) (let ((data_addr (tcp:make-socket-address))) (tcp:get-address-of-socket socket data_addr) (let ((a (tcp:socket-address-internet-address data_addr)) (b (tcp:socket-address-port data_addr))) (when (zerop a) (setq a tcp:*my-internet-address*)) (format t "PORT ~d,~d,~d,~d,~d,~d (~D)" (ldb (byte 8 24) a) (ldb (byte 8 16) a) (ldb (byte 8 8) a) (ldb (byte 8 0) a) (ldb (byte 8 8) b) (ldb (byte 8 0) b) b))) (tcp:SOCKET-ACCEPT socket (tcp:make-socket-address :port remote-port :internet-address (get-internet-address remote-address))) (setq normalp t) socket) (and socket (not normalp) (close-socket socket)))))