diff --git a/test/crossrunner/run.py b/test/crossrunner/run.py
index 4b4eb0a..2c212e0 100644
--- a/test/crossrunner/run.py
+++ b/test/crossrunner/run.py
@@ -129,11 +129,16 @@
     def ensure_socket_open(proc, port, max_delay):
         sleeped = 0.1
         time.sleep(sleeped)
-        sock4 = socket.socket()
-        sock6 = socket.socket(family=socket.AF_INET6)
         sleep_step = 0.2
-        try:
-            while sock4.connect_ex(('127.0.0.1', port)) and sock6.connect_ex(('::1', port)):
+        while True:
+            # Create sockets every iteration because refused sockets cannot be
+            # reused on some systems.
+            sock4 = socket.socket()
+            sock6 = socket.socket(family=socket.AF_INET6)
+            try:
+                if sock4.connect_ex(('127.0.0.1', port)) == 0 \
+                        or sock6.connect_ex(('::1', port)) == 0:
+                    return True
                 if proc.poll() is not None:
                     logger.warn('server process is exited')
                     return False
@@ -142,11 +147,11 @@
                     return False
                 time.sleep(sleep_step)
                 sleeped += sleep_step
-            logger.debug('waited %f sec for server port open' % sleeped)
-            return True
-        finally:
-            sock4.close()
-            sock6.close()
+            finally:
+                sock4.close()
+                sock6.close()
+        logger.debug('waited %f sec for server port open' % sleeped)
+        return True
 
     try:
         max_bind_retry = 3
diff --git a/test/py/RunClientServer.py b/test/py/RunClientServer.py
index d4a9cb2..15c4d2b 100755
--- a/test/py/RunClientServer.py
+++ b/test/py/RunClientServer.py
@@ -133,20 +133,26 @@
                             % (server_class, ' '.join(server_args)))
 
     # Wait for the server to start accepting connections on the given port.
-    sock = socket.socket()
     sleep_time = 0.1  # Seconds
     max_attempts = 100
-    try:
-        attempt = 0
-        while sock.connect_ex(('127.0.0.1', port)) != 0:
+    # try:
+    attempt = 0
+    while True:
+        sock4 = socket.socket()
+        sock6 = socket.socket(socket.AF_INET6)
+        try:
+            if sock4.connect_ex(('127.0.0.1', port)) == 0 \
+                    or sock6.connect_ex(('::1', port)) == 0:
+                break
             attempt += 1
             if attempt >= max_attempts:
                 raise Exception("TestServer not ready on port %d after %.2f seconds"
                                 % (port, sleep_time * attempt))
             ensureServerAlive()
             time.sleep(sleep_time)
-    finally:
-        sock.close()
+        finally:
+            sock4.close()
+            sock6.close()
 
     try:
         if verbose > 0:
