diff --git a/set-timeouts.lisp b/set-timeouts.lisp
--- a/set-timeouts.lisp
+++ b/set-timeouts.lisp
@@ -41,7 +41,7 @@
 set."
   (declare (ignorable usocket read-timeout write-timeout))
   ;; add other Lisps here if necessary
-  #+(or :sbcl :cmu)
+  #+(or :sbcl :cmu :abcl)
   (unless (eql read-timeout write-timeout)
     (parameter-error "Read and write timeouts for socket must be equal."))
   #+:clisp
@@ -65,6 +65,11 @@
   #+:cmu
   (setf (lisp::fd-stream-timeout (usocket:socket-stream usocket))
         (coerce read-timeout 'integer))
-  #-(or :clisp :allegro :openmcl :sbcl :lispworks :cmu)
+  #+:abcl
+  (when read-timeout
+    (java:jcall (java:jmethod "java.net.Socket" "setSoTimeout"  "int")
+                (usocket:socket usocket)
+                (* 1000 read-timeout)))
+  #-(or :clisp :allegro :openmcl :sbcl :lispworks :cmu :abcl)
   (not-implemented 'set-timeouts))
 
