Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
Quellcode |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
class Server: def __init__(self): self.HOST = '192.168.178.55' self.PORT = 6666 self.server_address = (self.HOST, self.PORT) self.connected = False self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) print ('starting up on %s port %s' % self.server_address, file=sys.stderr) self.sock.bind(self.server_address) self.sock.listen(10) threading.Thread.__init__(self) self.t1 = threading.Thread(target=self.run) self.t1.daemon = True self.t1.start() def run(self): while True: if self.connected == False: # Wait for a connection global connected, client, client_address connected = True print ('waiting for a connection', file=sys.stderr) client, client_address = self.sock.accept() print ('connection from', client_address, file=sys.stderr) #print (connected, file=sys.stderr) def send_to_client(self, string): global client, connected if connected == True: print (string, file=sys.stderr) client.send(string.encode()) |
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].
Wo? Variablen innerhalb von Fuktionen sind lokale Variablen und somit immer lokal. Wenn du diese an mehreren Stellen verwenden willst, dann musst du sie an anderer Stelle anlegen. Ich hatte in Python bereits mit Threading gearbeitet und hatte bisher keine Probleme, einfach die gleichen Variablen (also Member des Objekts, welches die vom Thread ausgeführte Methode beinhaltet) zuzugreifen.Das heißt alle Variablen die man da definiert [...]
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].
Quellcode |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
import socket import sys import threading ############################################################################## class Server: def __init__(self): self.server_address = ('192.168.178.43', 6666) self.connected = False self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) print ('starting up on %s port %s' % self.server_address, file=sys.stderr) self.sock.bind(self.server_address) self.sock.listen(10) self.client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.client_address = '' self.connected = False threading.Thread.__init__(self) self.t1 = threading.Thread(target=self.run) self.t1.daemon = True self.t1.start() def run(self): # Wait for a connection print ('waiting for a connection', file=sys.stderr) self.client, self.client_address = self.sock.accept() print ('connection from', self.client_address, file=sys.stderr) self.connected = True print (self.connected, file=sys.stderr) #Hier wird zur Laufzeit True ausgegeben. def send_to_client(self, data): print (self.connected, file=sys.stderr) #Und hier dann False. Wieso ??? if self.connected == True: print (data, file=sys.stderr) self.client.send(data) |
Werbeanzeige