
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
