Code: Alles auswählen
import socket, threading
CFG_HOST = '127.0.0.1'
CFG_PORT = 8080
CFG_TIMEOUT = 7.5
CFG_LQUEUE = 5
class ReqHandler(threading.Thread):
def __init__(self, sock, addr):
threading.Thread.__init__(self)
self.setDaemon(True)
self.sock = sock
self.addr = addr
def run(self):
while True:
print 'lese daten:'
data = self.sock.recv(1024)
if not data:
break
print data
#self.sock.send('tjoa')
print 'socket close.'
self.sock.close()
socket.setdefaulttimeout(CFG_TIMEOUT)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((CFG_HOST, CFG_PORT))
s.listen(CFG_LQUEUE)
print 'Starte HTTP-Server auf Host/Port .: %s:%d' % (CFG_HOST, CFG_PORT)
print 'Zugelassene Clients in Queue .....: %d' % CFG_LQUEUE
print 'Socket Timeout ...................: %d\n' % CFG_TIMEOUT
while True:
(sock, addr) = s.accept()
client = ReqHandler(sock, addr)
client.start()
ich habe mit diesem code 2 probleme:
- wie kann ich auf ein timeout reagieren, damit nicht dauernd tracebacks kommen?
- die verzweigung "if not data: break" funktioniert nicht richtig, wenn ich mit einem xbeliebigen browser (firefox z.b.) verbinde, schließt sich die verbindung nicht wirklich nachden der http header vom client empfangen wurde (am besten selber testen, ich kanns nur schwer beschreiben).
für jegliche hilfe bin ich euch sehr dankbar
MfG