Python snippets

From Bashlinux
Revision as of 05:57, 18 June 2015 by Manpaz (talk | contribs) (Created page with "__NOTOC__ === How to write a simple server and client in Python === Simple Server/Client communication, communication data is text. ==== Server ==== import SocketServer c...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

How to write a simple server and client in Python

Simple Server/Client communication, communication data is text.

Server

import SocketServer

class EchoRequestHandler(SocketServer.BaseRequestHandler):
   def setup(self):
       print self.client_address, 'connected!'
       self.request.send('hi ' + str(self.client_address) + '\n')

   def handle(self):
       while 1:
           data = self.request.recv(1024)
           self.request.send(data)
           if data.strip() == 'bye':
               return

   def finish(self):
       print self.client_address, 'disconnected!'
       self.request.send('bye ' + str(self.client_address) + '\n')

# Server host is a tuple ('host', port)
server = SocketServer.ThreadingTCPServer(('localhost', 5000), EchoRequestHandler)
server.serve_forever()

Client

import socket

sock = socket.socket(socket.AF_INET, sock.SOCK_STREAM)
sock.connect(('localhost', 5000))
print sock.recv(1024)
sock.send('bye')

How to create a subprocess in a thread with Python

How to call an external command with Popen, a subprocess, inside of a thread.

import threading
import subprocess

class MyClass(threading.Thread):
   def __init__(self):
       self.stdout = None
       self.stderr = None
       threading.Thread.__init__(self)

   def run(self):
       p = subprocess.Popen('rsync -av /etc/passwd /tmp'.split(),
                            shell=False,
                            stdout=subprocess.PIPE,
                            stderr=subprocess.PIPE)

       self.stdout, self.stderr = p.communicate()

myclass = MyClass()
myclass.start()
myclass.join()
print myclass.stdout