r10151: updates
[kmrcl.git] / sockets.lisp
index 74fa27e1a82d9d8acf6a5adc8535eea213648d3a..f105501777be5e122c3cdf012c5c44ff6ca0b1e9 100644 (file)
@@ -46,7 +46,10 @@ setsockopt SO_REUSEADDR if :reuse is not nil"
   #+sbcl
   (listen-to-inet-port :port port :reuse reuse-address)
   #+clisp (ext:socket-server port)
-  #-(or allegro clisp cmu sbcl)
+  #+openmcl 
+  (ccl:make-socket :connect :passive :local-port port
+                  :reuse-address reuse-address)
+  #-(or allegro clisp cmu sbcl openmcl)
   (warn "create-inet-listener not supported on this implementation")
   )
 
@@ -83,7 +86,10 @@ setsockopt SO_REUSEADDR if :reuse is not nil"
        (sb-bsd-sockets:socket-make-stream
        sock :element-type 'base-char :input t :output t)
        sock)))
-  #-(or allegro clisp cmu sbcl)
+  #+openmcl 
+  (let ((sock (ccl:accept-connection listener :wait t)))
+    (values sock sock))
+  #-(or allegro clisp cmu sbcl openmcl)
   (warn "accept-tcp-connection not supported on this implementation")
   )
 
@@ -102,7 +108,8 @@ setsockopt SO_REUSEADDR if :reuse is not nil"
   #+cmu (unix:unix-close socket)
   #+sbcl (sb-unix:unix-close
          (sb-bsd-sockets:socket-file-descriptor socket))
-  #-(or allegro clisp cmu sbcl)
+  #+openmcl (close socket)
+  #-(or allegro clisp cmu sbcl openmcl)
   (warn "close-passive-socket not supported on this implementation")
   )
 
@@ -110,7 +117,6 @@ setsockopt SO_REUSEADDR if :reuse is not nil"
 (defun close-active-socket (socket)
   (close socket))
 
-#+sbcl
 (defun ipaddr-to-dotted (ipaddr &key values)
   "Convert from 32-bit integer to dotted string."
   (declare (type (unsigned-byte 32) ipaddr))
@@ -122,7 +128,6 @@ setsockopt SO_REUSEADDR if :reuse is not nil"
        (values a b c d)
       (format nil "~d.~d.~d.~d" a b c d))))
 
-#+sbcl
 (defun dotted-to-ipaddr (dotted &key (errorp t))
   "Convert from dotted string to 32-bit integer."
   (declare (string dotted))
@@ -172,10 +177,13 @@ setsockopt SO_REUSEADDR if :reuse is not nil"
       sock :input t :output t :element-type 'base-char)
      sock))
   #+cmu
-  (let ((sock (ext:connect-to-inet-socket host port)))
+  (let ((sock (ext:connect-to-inet-socket server port)))
     (values
      (sys:make-fd-stream sock :input t :output t :element-type 'base-char)
      sock))
+  #+openmcl
+  (let ((sock (ccl:make-socket :remote-host server :remote-port port )))
+    (values sock sock))
   )
 
 (defun ipaddr-array-to-dotted (array)
@@ -190,5 +198,6 @@ setsockopt SO_REUSEADDR if :reuse is not nil"
   #+sbcl (ipaddr-array-to-dotted 
          (nth-value 0 (sb-bsd-sockets:socket-peername socket)))
   #+cmu (nth-value 0 (ext:get-peer-host-and-port socket))
+  #+openmcl (ccl:remote-host socket)
   )