ok, habs geändert siehe den code. Aber der Fehler kommt immernoch:
ich hab einen server, der sich selber schließt, sobald es ein Client tut
Es kommt bei der Server Seite so eine Fehlermeldung:
Code: Alles auswählen
Traceback (most recent call last):
File "C:\Users\Mohammed\Desktop\Arbeit\Python\Python selbst 2.6\der ungewöhnliche chat\server.py", line 25, in ?
nachricht = sock.recv(1024)
error: (10054, 'Connection reset by peer')
Hier kommt der Server
Code: Alles auswählen
import socket
import select
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(("", 50000))
server.listen(1)
clients = []
while True:
lesen, schreiben, oob = select.select([server] + clients,
[], [])
for sock in lesen:
if sock is server:
client, addr = server.accept()
clients.append(client)
b="+++ Client %s verbunden" % addr[0]
for a in clients:
a.send(b)
else:
nachricht = sock.recv(1024)
ip = sock.getpeername()[0]
if nachricht:
for d in clients:
if d is sock:
continue
e="[%s] %s" % (ip, nachricht)
d.send(e)
else:
for f in clients:
g="+++ Verbindung zu %s beendet" % ip
f.send(g)
sock.close()
clients.remove(sock)
for c in clients:
c.close()
server.close()
So jetzt der Client
Code: Alles auswählen
import socket
import select
import thread
ip = "127.0.0.1"
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((ip, 50000))
def empfangen():
while True:
lesen, schreiben, oob=select.select([s],[],[])
if lesen:
a=s.recv(1024)
print (a)
else:
pass
thread.start_new_thread(empfangen,())
try:
while True:
nachricht = raw_input("Nachricht: ")
s.send(nachricht)
finally:
s.close()