Problemas con socket, asyncore

Hector Miuler Malpica Gallegos miuler en gmail.com
Vie Ago 5 17:56:49 CEST 2005


Hola amigos, mi pequeño ejemplo con sockets consume mucho CPU (puede llegar 
a 90%), son dos programas un server y un cliente.

EL SERVER
=========
#!/usr/bin/python

import asyncore, socket
import psycopg, time, sys


class MetrosHandle(asyncore.dispatcher):

def handle_write(self):
print "handle_write"
#self.send("OK")

def handle_read(self):
print "handle_read"
data_ = self.recv(256)
print data_

def handle_close(self):
print "handle_close"
self.close()


class ServerFlamingo(asyncore.dispatcher):

def __init__(self, port=1728):
self.port = port
self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
self.bind(("", port))
self.listen(5)
print "listening on port", self.port

def handle_accept(self):
channel, addr = self.accept()
MetrosHandle(channel)


server = ServerFlamingo(1728)
asyncore.loop(1)

EL CLIENTE
==========
===
#!/usr/bin/python

import socket

HOST="localhost"
PORT=1728

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
s.send('000 Hello, world 000 \n')
s.send('111 Hello, world 111 \n')
s.send('222 Hello, world 222 \n')
s.send('333 Hello, world 333 \n')
s.send('444 Hello, world 444 \n')
#print s.recv(300)
s.close()

Al ejecutarlo el cliente al parecer el server abre la conexión lee los datos 
y entra en un casi eterno intento de escritura. Al quitar el comentario de 
#self.send("OK") en el handle_write(self) del server y quitar el comentario 
de #print s.recv(300) del cliente, recibo un monton de OK, porque este 
intento de de escribir un monton de veces ?





-- 
_\|/_
(O-O)
--oOO-(_)-OOo----------------------------------------
Hector Miuler Malpica Gallegos
Universidad Nacional del Callao - Peru
Escuela de Ingenieria Electronica

Jabber miuler en jabber.org
usuario registrado #308608




Más información sobre la lista de distribución Python-es