Problem mit clientsocket.recv
Verfasst: Montag 17. Januar 2011, 20:55
Guten Abend
Also erstmal ich heisse Sn4ke und bin neu in diesem Forum...
Folgendes Problem:
Ich bin allgemein ein Python Anfänger...
Ich hab nachdem ich paar Projekte mit Python (+Pygame) gemacht habe, angefangen
mich mit Sockets zu beschäftigen. Meine Idee war es einen kleinen Chat zu schreiben.
Allerdings sollen sich dort mehrere Clients drauf verbinden können + alle können etwas schreiben.
Jetzt ist mein Problem die Funktion recieve(), diese würde eigentlich funktionieren wenn dieses
data = clientsockets.recv(1024).decode("ascii") nicht solange warten würde bis es Daten bekommt.
Also: Wie kann ich das verhindern?
Wichtig: Ja, es stimmt das die data nur ausgegeben wird. Das ist auch nur zu Testzwecken dort,
später werde ich diese an die einzelnen Clients versenden.
Hier ist der Code vom Server:
Ja, ich weiss mein Programmierstyle ist nicht der beliebteste
Den Code vom Client brauche ich hier nicht zu posten, der funktioniert tadellos.
Ps: Wenn ihr den Thread nicht versteht, bitte sagen bin bissel minimalistisch im Moment
Danke an alle Antworten
Mit freundlichen Grüssen
Sn4ke

Also erstmal ich heisse Sn4ke und bin neu in diesem Forum...
Folgendes Problem:
Ich bin allgemein ein Python Anfänger...
Ich hab nachdem ich paar Projekte mit Python (+Pygame) gemacht habe, angefangen
mich mit Sockets zu beschäftigen. Meine Idee war es einen kleinen Chat zu schreiben.
Allerdings sollen sich dort mehrere Clients drauf verbinden können + alle können etwas schreiben.
Jetzt ist mein Problem die Funktion recieve(), diese würde eigentlich funktionieren wenn dieses
data = clientsockets.recv(1024).decode("ascii") nicht solange warten würde bis es Daten bekommt.
Also: Wie kann ich das verhindern?
Wichtig: Ja, es stimmt das die data nur ausgegeben wird. Das ist auch nur zu Testzwecken dort,
später werde ich diese an die einzelnen Clients versenden.
Hier ist der Code vom Server:
Code: Alles auswählen
import socket,threading
print ("Starting Chat Sever...")
serverport = input("Give me a Port: ")
welcometext = "Welcome to the Sn4ke's Chat Server!"
global clientsockets
clientsockets= []
def recieve():
while True:
if len(clientsockets) != 0:
for i in range(0,len(clientsockets)):
data = clientsockets[i].recv(1024).decode("ascii")
if not data: break
print(data)
def newconnect():
while True:
clientsocket,addr = serversocket.accept()
print("IP: " + "["+addr[0]+"] " + " connected successfully!")
clientsocket.send(bytes(welcometext ,"ascii"))
clientsockets.append(clientsocket)
try:
serverport = int(serverport)
global serversocket
serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serversocket.bind((socket.gethostname(),serverport))
serversocket.listen(5)
thread1 = threading.Thread(target=newconnect)
thread2 = threading.Thread(target=recieve)
thread1.start()
thread2.start()
print ("Server ist nun Online!")
except:
print("Error")

Den Code vom Client brauche ich hier nicht zu posten, der funktioniert tadellos.
Ps: Wenn ihr den Thread nicht versteht, bitte sagen bin bissel minimalistisch im Moment

Danke an alle Antworten
Mit freundlichen Grüssen
Sn4ke
