Hi, Can someone help me leave the murky c++ world and enter shiny pythonland?
I have a problem with importing and global variables, here's my code: ---------------------------------------- ##server.py #socket connections from socketManager import* network = CNetworkManager() network.Listen() -------------------------------------- ##socketManager.py from time import sleep from socket import* import threading class CNetworkManager(): def __init__(self): self.hostName = "" self.portNumber = 15500 self.buffer = 500 self.serverAddress = ( self.hostName, self.portNumber ) self.maxClients = 2 ## previous stuff to send to new client self.serverData = [] self.serverSocket = socket ( AF_INET, SOCK_STREAM ) self.serverSocket.bind ( self.serverAddress ) print( "Socket started " ) self.serverSocket.listen ( self.maxClients ) print( "Server is waiting for a connection" ) def Listen(self): self.threadArray =[] self.ch = 0 while self.ch < self.maxClients: #Create a thread listening to each socket self.newThreadObject = CServerThread() self.newThreadObject.start() self. threadArray.append(self.newThreadObject) self.ch=self.ch+1 class CServerThread(threading.Thread): def run(self): while (1): self.clientSocket, self.clientAddress = network.accept() print("New Client:", self.clientAddress) if network.serverData: for i in range(len(network.serverData)): clientSocket.send(str(network.serverData[i])) sleep(0.01) else: clientSocket.send("You are logged in") print("Entering loop for client ", clientAddress ) while 1: clientData = clientSocket.recv(Buffer) if not clientData: print( clientAddress + " has closed the connection" ) break print( "%s says %s" % (clientAddress, clientData)) clientData = clientData + "~~" network.serverData.append(clientData) for i in range(len(network.serverData)): clientSocket.send(str(network.serverData[i])) sleep(0.01) print("Ready to receive more data") clientData.close() break network.serverSocket.close() -------------------------------------------------- When run, I come unstuck here: self.clientSocket, self.clientAddress = network.accept() I get a nameError on 'network', yet it is one in the global namespace, defined in server.py before CServerThread.Listen() is called. In c++, I understood how to declare variables, here I have a problem. Its like I need an extern statement from c++. Can anyone clarify this for me? Many thanks Simon _________________________________________________________________ Play your part in making history - Email Britain! http://www.emailbritain.co.uk/ -- http://mail.python.org/mailman/listinfo/python-list