Andrés, gracias por el ejemplo que me enviaste, he estado estudiándolo y aunque a penas comencé a entrarle, parece estar muy clarito a pesar de no estar comentado.<br><br>Sin lugar a dudas es muy sencillo de hacer de esta forma. Voy a ver como lo adapto al jueguito.<br>
<br>Gracias de nuevo !!<br><br><br><br><br><br><br><div class="gmail_quote">El 15 de agosto de 2010 12:15, Flavio Danesse <span dir="ltr"><<a href="mailto:fdanesse@gmail.com">fdanesse@gmail.com</a>></span> escribió:<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><div><div></div><div class="h5"><b>Para levantar el servidor UDP + el Juego y poder jugar y escuchar:</b><br>
<span style="color: rgb(153, 0, 0);"> from UDPServer_thread import UDPServer_thread</span><br style="color: rgb(153, 0, 0);">
<span style="color: rgb(153, 0, 0);"> self.servidor = UDPServer_thread("Servidor", [])</span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);"> self.servidor.start()</span><br style="color: rgb(153, 0, 0);">
<br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);"> from JAMtank import JAMtank</span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);"> self.jamtank = JAMtank()</span><br>
<br><b>El Servidor:</b><br><span style="color: rgb(0, 0, 153);">import threading</span><br style="color: rgb(0, 0, 153);"><span style="color: rgb(0, 0, 153);">from UDPServer import UDPServer</span><br style="color: rgb(153, 0, 0);">
<br style="color: rgb(153, 0, 0);"><b><span style="color: rgb(153, 0, 0);">class UDPServer_thread (threading.Thread):</span><br style="color: rgb(153, 0, 0);"><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);"> def __init__(self, nombre, args):</span><br style="color: rgb(153, 0, 0);">
<br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);"> threading.Thread.__init__(self)</span></b><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);"> self.setName(nombre)</span><br style="color: rgb(153, 0, 0);">
<br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);"> self.servidor = None</span><br style="color: rgb(153, 0, 0);"><br style="color: rgb(153, 0, 0);"><b><span style="color: rgb(153, 0, 0);"> def run (self):</span></b><br style="color: rgb(153, 0, 0);">
<span style="color: rgb(153, 0, 0);"> print '%s Corriendo Adecuadamente' % self.getName()</span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);"> self.servidor = UDPServer()</span><div>
<br>
<br><span style="color: rgb(0, 0, 153);">import SocketServer</span><br style="color: rgb(0, 0, 153);"><span style="color: rgb(0, 0, 153);">import gobject</span><br style="color: rgb(0, 0, 153);"><br style="color: rgb(0, 0, 153);">
<span style="color: rgb(0, 0, 153);">import sys</span><br style="color: rgb(0, 0, 153);"><span style="color: rgb(0, 0, 153);"></span><br style="color: rgb(0, 0, 153);"></div><span style="color: rgb(0, 0, 153);">HOST, PORT = "localhost", 9999</span><br style="color: rgb(153, 0, 0);">
<br style="color: rgb(153, 0, 0);"><b><span style="color: rgb(153, 0, 0);">class UDPServer():</span><br style="color: rgb(153, 0, 0);"><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);"> def __init__(self):</span></b><div>
<br style="color: rgb(153, 0, 0);">
<br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);"> self.server = None</span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);"> self.get_server()</span><br style="color: rgb(153, 0, 0);">
<br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);"> <b> def get_server(self):</b></span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(51, 51, 255);"> # Levanta el Servidor</span><br style="color: rgb(51, 51, 255);">
<br style="color: rgb(51, 51, 255);"><span style="color: rgb(51, 51, 255);"> # <a href="http://docs.python.org/library/socketserver.html" target="_blank">http://docs.python.org/library/socketserver.html</a></span><br style="color: rgb(51, 51, 255);">
<span style="color: rgb(51, 51, 255);"> # 20.17.2. Server Objects</span><br style="color: rgb(153, 0, 0);"><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);"> self.server = SocketServer.UDPServer((HOST, PORT), MyUDPHandler) <span style="color: rgb(51, 51, 255);"># Instancia de Servidor UDP con su controlador</span></span><br style="color: rgb(153, 0, 0);">
<span style="color: rgb(153, 0, 0);"> self.server.serve_forever()<span style="color: rgb(51, 51, 255);"> # handle_request() o serve_forever() para procesar uno o muchos pedidos.</span></span><br style="color: rgb(153, 0, 0);">
<br style="color: rgb(153, 0, 0);"><b><span style="color: rgb(153, 0, 0);">class MyUDPHandler(SocketServer.BaseRequestHandler):</span><br style="color: rgb(153, 0, 0);"><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);"> def handle(self):</span></b><br style="color: rgb(153, 0, 0);">
<br style="color: rgb(153, 0, 0);"></div><span style="color: rgb(153, 0, 0);"> print "Conexión establecida con: " , self.client_address</span><div><br style="color: rgb(153, 0, 0);"><br style="color: rgb(153, 0, 0);">
<span style="color: rgb(153, 0, 0);"> data = self.request[0].strip()</span><br style="color: rgb(153, 0, 0);"></div><div><span style="color: rgb(153, 0, 0);"> socket = self.request[1]</span><br style="color: rgb(153, 0, 0);">
<br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);"> socket.sendto("ok", self.client_address)</span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);"> </span><br style="color: rgb(153, 0, 0);">
<span style="color: rgb(153, 0, 0);"> <b>def setup(self):</b></span><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);"> <span style="color: rgb(51, 51, 255);">#
Llamado antes de la handle() para realizar acciones de inicialización
necesaria. La implementación predeterminada no hace nada.</span></span><br style="color: rgb(153, 0, 0);">
</div><span style="color: rgb(153, 0, 0);"> print "Configurando Conexión"</span><div><br style="color: rgb(153, 0, 0);"><br style="color: rgb(153, 0, 0);"><span style="color: rgb(153, 0, 0);"> <b>def finish(self):</b></span><br style="color: rgb(153, 0, 0);">
<span style="color: rgb(153, 0, 0);"> <span style="color: rgb(51, 51, 255);"># Llamado despues de la handle() para realizar cualquier método de limpieza. La implementación predeterminada no hace nada.</span></span><br style="color: rgb(153, 0, 0);">
<span style="color: rgb(153, 0, 0);"> print "Finalizando Solicitud"</span><br style="color: rgb(153, 0, 0);"><br style="color: rgb(153, 0, 0);"><b><span style="color: rgb(153, 0, 0);">if __name__ == "__main__":</span></b><br style="color: rgb(153, 0, 0);">
<span style="color: rgb(153, 0, 0);"> Servidor()</span></div>
</div></div></blockquote></div><br>