Search code examples
pythontcpserver

Python, How to Send data over TCP


I need to create a simple server that listens for TCP connections. If it receives text on<EOF> or off<EOF> then it sends (echo) back success. The receiving part is working, but now i need it to send back success.

Code:

# import threading
import SocketServer

class TCPHandler(SocketServer.BaseRequestHandler): 

   def handle(self):
      self.msg = self.request.recv(1024).strip()
      if self.msg == "on<EOF>":
         print "Turning On..."
         #ECHO "SUCCESS<EOF>"        <----- I need the server to echo back "success"
      if self.msg == "off<EOF>":
         print "Turning Off..."
         #ECHO "SUCCESS<EOF>"        <----- I need the server to echo back "success"


      if __name__ == "__main__": 
         host, port = '192.168.1.100', 1100

  # Create server, bind to local host and port 
  server = SocketServer.TCPServer((host,port),TCPHandler)

  print "server is starting on ", host, port

  # start server
  server.serve_forever()

Solution

  • Well i did it a day before following a very good tutorial, cant find the link but here is the code

    client.py

    import socket
    
    host = socket.gethostname()
    port = 12345                   # The same port as used by the server
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect((host, port))
    s.sendall(b'Hello, world')
    data = s.recv(1024)
    s.close()
    print('Received', repr(data))
    

    For server

    echo_server.py

    import socket
    
    host = ''        # Symbolic name meaning all available interfaces
    port = 12345     # Arbitrary non-privileged port
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.bind((host, port))
    
    print host , port
    s.listen(1)
    conn, addr = s.accept()
    print('Connected by', addr)
    while True:
    
        try:
            data = conn.recv(1024)
    
            if not data: break
    
            print "Client Says: "+data
            conn.sendall("Server Says:hi")
    
        except socket.error:
            print "Error Occured."
            break
    
    conn.close()