> I use this to send commands (status and rcon) to Quake 2 servers: > > UDP_RECV_TIMEOUT = 3 # seconds > > def q2cmd(str) > resp, sock = nil, nil > begin > cmd = "\377\377\377\377#{str}\0" > sock = UDPSocket.open > sock.send(cmd, 0, @server_addr, @server_port) > resp = if select([sock], nil, nil, UDP_RECV_TIMEOUT) > sock.recvfrom(65536) > end > if resp > resp[0] = resp[0][4..-1] # trim quake's leading 0xffffffff > end > rescue IOError, SystemCallError > ensure > sock.close if sock > end > resp > end Yes! Why didn't I remember this select command? :/ Newbies should always relearn Kernel stuff before starting network programming... Thank you very much! -- Ceci est une signature automatique de MesNews. Site : http://mesnews.no-ip.com