I found my car ;) here's the server:
class commServer: """Class to hold a tcp server and interact with with it allows for a wrapper around socket class to keep code clean""" def __init__ (self, host, hostid, port, buff =1024): self.host = host self.hostid = hostid #id of the server self.port = port self.buffer = buff self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.conn = None self.addr = None def bindServ(self): """Connect to the server specified by self.host, self.port""" self.socket.bind((self.host, self.port)) def closeConn(self): """Disconnect from the server connected to""" self.conn.close() def listen(self): self.socket.listen(1) def accept(self): self.conn, self.addr = self.socket.accept() #lets you send a string msg to the server def sendMSG(self, msg): self.conn.send(msg) #lets you receive data from the server def recvMSG(self): msg = self.socket.recv(self.buffer) if msg == "": #if the client disconnected let's not throw return False else: return msg class Negotiator: """Negotiator for the server handles all communication with the client to verify the server and prepare the file the client wants for download""" def __init__(self, host, hostid, port, rsa_key): self.server = commServer(host,hostid,port) def Negotiate(self): self.server.bindServ() self.server.listen() self.server.accept() #Plan on being asked for server confirmation clmsg = self.server.recvMSG() # it fails right here on the server calling the Server Negotiator as: host = "127.0.0.1" port = 8005 HOSTID = a string key = an RSA key servernegotiator = Negotiator(host,HostID, port, key) if servernegotiator.Negotiate() == False: print "something went wrong" print "Done" for the client it is: class commClient: """Class to hold a tcp client and interact with with it allows for a wrapper around socket class to keep code clean""" def __init__ (self, host, hostid, port, buff =1024): self.host = host self.hostid = hostid #id of the server self.port = port self.buffer = buff self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) def connectServ(self): """Connect to the server specified by self.host, self.port""" self.socket.connect((self.host, self.port)) def disconnServ(self): """Disconnect from the server connected to""" self.socket.close() #lets you send a string msg to the server def sendMSG(self, msg): self.socket.send(msg) #lets you receive data from the server def recvMSG(self): msg = self.socket.recv(self.buffer) if msg == "": #if the server disconnected let's not throw something later return False else: return msg class Negotiator: """The Negotiator handles all communications and message handling necessary for verifying the server, and that the file is available to download""" def __init__(self, host, hostid, port, rsa_key): """client should be a commClient object that has not been connected to the server.""" self.client = commClient(host, hostid, port) self.clientKey = rsa_key self.serverKey = None self.CScipher = None #AES cipher for client -> server self.SCcipher = None #AES cipher for server -> client self.CShalves = None #tuple for random halves by client self.SChalves = None #tuple for random halves by server self.file = None def Negotiate(self, fname): """Contact the server, verify the server, negotiates for a file to be downloaded by the client. It returns the file name to be downloaded, and the cipher to decrypt it.""" self.client.connectServ() print "connected" #tell the server you want to connect clmsg = message(CONN, (self.client.getHost(), self.client.getHostID())) #message acts as a wrapper around a message type and the data for the type self.client.sendMSG(clmsg.getSendable()) # here is were it fails the Negotiator is called as: host = "127.0.0.1" port = 8005 HOSTID is the same string as before key is an RSA key clientnegotiator = Negotiator(host, HostID, port, key) filename = clientnegotiator.Negotiate("hostid") the stack traces are: Server side: Traceback (most recent call last): File "Server.py", line 17, in <module> if servernegotiator.Negotiate() == False: File "/home/twistedphrame/Desktop/communication/ ServerNegotiator.py", line 184, in Negotiate clmsg = self.server.recvMSG() File "/home/twistedphrame/Desktop/communication/ ServerNegotiator.py", line 67, in recvMSG msg = self.socket.recv(self.buffer) socket.error: [Errno 107] Transport endpoint is not connected Client Side: File "Client.py", line 17, in <module> filename = clientnegotiator.Negotiate("hostid") File "/home/twistedphrame/Desktop/communication/ ClientNegotiator.py", line 209, in Negotiate srvmsg = self.client.recvMSG() File "/home/twistedphrame/Desktop/communication/ ClientNegotiator.py", line 55, in recvMSG msg = self.socket.recv(self.buffer) socket.error: [Errno 104] Connection reset by peer -- http://mail.python.org/mailman/listinfo/python-list