''' A simple TCP/IP client server. This is a very basic client server which doesn't including threading for new socket connections. Created on Apr 2, 2013 @author: Ian Kaplan ''' import threading import socket port = 2049 host = "localhost" try: ipAddr = socket.gethostbyname(host) print "IP = " + ipAddr except socket.gaierror: print "Host name could not be resolved" class TCPBase(threading.Thread): def __init__(self): self.soc = self.buildSocket() super(TCPBase, self).__init__() def buildSocket(self): try: s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) print 'Socket created' except socket.error, msg: print 'Failed to create socket Error code: ' + str(msg[0]) + ', Error message: ' + msg[1] return s class ClientThread(TCPBase): def __init__(self): super(ClientThread, self).__init__() def run(self): ''' Client thread ''' err = 0 try: self.soc.connect((host, port)) print "socket connected\n" except socket.error: print "Socket connection error in client" err = 1 if not err: print "run client thread" self.soc.sendall("Twas brillig and the slithy toves") self.soc.close() print "exit client" class ServerThread(TCPBase): def __init__(self): super(ServerThread, self).__init__() def run(self): ''' Server thread ''' err = 0 try: self.soc.bind((host, port)) print "Bind worked" except socket.error , msg: print "Bind failed in server: " + str(msg[0]) + " Message " + msg[1] err = 1 if not err: try: self.soc.listen(10) except socket.error, msg: print "Listen failed: " + str(msg[0]) + " Message " + msg[1] err = 1 if not err: conn, addr = self.soc.accept() print "Accepted client connection to address " + str(addr) + "\n" while True: data = conn.recv(1024) if data: print "server: " + data else: break self.soc.close() print "exit server" def main(): print "Hello world" client = ClientThread() server = ServerThread() server.start() client.start() while client.isAlive() and server.isAlive(): ''' Do nothing ''' print "Main: that's all folks" main()