Knowing if the RTDE-server is running or not

I know how to check if the connection is up or not when I previusly got a connection from my client…

But at startup I’m planning to use RTDE on the robot controller and use the local host, crontab will then execute my client.

To be able to know when the server is up and running I have to test the connection, before I try to connect with the server. When I get an answer from the host/port, the RTDE-server isn’t really up and running, so I got to add a 20 second delay before I connect or I get errors.

I don’t like to use delays. Is there another way to know if the RTDE server is ready to be connected to?

# Code that I use
import socket
import time

def WaitForPoly(host , port):
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.settimeout(2)
    result = sock.connect_ex(host,port)
    if result == 0:
        print 'Port open'
        return True
    else:
        print 'Port closed, message returned: '+str(result)
        return False

while not WaitForPoly('localhost' , 30004):
    time.sleep(1)
# THIS IS BAD CODE
time.sleep(20)