snippets / server

All snippets tagged server (2)

  1. Port forwarding

    Manque à implémenter une façon d'arrêter le script !!

     1 #! /usr/bin/env python
    2 #-*- coding: utf-8 -*-
    3
    4 import socket
    5 import threading
    6
    7 class PipeThread(threading.Thread):
    8 pipes = []
    9 def __init__(self, sockInput, sockOutput, name):
    10 threading.Thread.__init__(self)
    11 self.setName(name)
    12 self.pipes.append(self)
    13 self.mydata = threading.local()
    14 self.sockInput = sockInput
    15 self.sockOutput = sockOutput
    16
    17 def run(self):
    18 print self.getName(), "started !!"
    19 while True:
    20 try:
    21 self.mydata.buffer = self.sockInput.recv(1024)
    22 if not self.mydata.buffer:
    23 break;
    24 print self.getName(), " :", self.mydata.buffer[0:48]
    25 self.sockOutput.send(self.mydata.buffer)
    26 except KeyboardInterrupt:
    27 sys.exit(0)
    28 except:
    29 break
    30 print self.getName(), "ended !!"
    31 self.sockInput.close()
    32 self.sockOutput.close()
    33 self.pipes.remove(self)
    34
    35
    36 class PipeHole(threading.Thread):
    37 def __init__(self, portInput, host, portOutput):
    38 threading.Thread.__init__(self)
    39 print "Redirecting : localhost:%s -> %s:%s" % (portInput, host, portOutput)
    40 self.hostname = hostname
    41 self.portOutput = portOutput
    42 # Wait for incomings clients
    43 self.sockMaster = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    44 self.sockMaster.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    45 self.sockMaster.bind(('', portInput))
    46 self.sockMaster.listen(5)
    47 print "Server is ready !!"
    48
    49 def run(self):
    50 try:
    51 while True:
    52 # Accept a client connection
    53 sockClient, addr = self.sockMaster.accept()
    54 sRemote = socket.gethostbyaddr(addr[0])
    55 print "Connection :", sRemote[0], sRemote[2] , ":", sockClient.getpeername()[1]
    56 # Connect to server
    57 sockServer = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    58 sockServer.connect((self.hostname, self.portOutput))
    59 PipeThread(sockClient, sockServer, "Client").start()
    60 PipeThread(sockServer, sockClient, "Server").start()
    61 except KeyboardInterrupt:
    62 sys.exit(0)
    63 self.sockMaster.close()
    64
    65 if __name__ == '__main__':
    66 import sys
    67 try:
    68 port = int(sys.argv[1])
    69 hostname = sys.argv[2]
    70 try:
    71 new_port = int(sys.argv[3])
    72 except IndexError:
    73 new_port = port
    74 except (IndexError, ValueError):
    75 print "Usage: %s port hostname [new_port]" % sys.argv[0]
    76 sys.exit(1)
    77
    78 try:
    79 mainThread = PipeHole(port, hostname, new_port)
    80 mainThread.start()
    81 mainThread.join()
    82 except KeyboardInterrupt:
    83 sys.exit(0)
    84
    85 print "Shutting down !!"
    86 #sys.exit(0)
    Posted by slubman to python server ... saved by 2 persons ... 0 comments ... 1 year, 1 month
  2. Simple serveur web en python

    version "minimaliste"

     1 from BaseHTTPServer import BaseHTTPRequestHandler,HTTPServer
    2
    3 class MyServer(BaseHTTPRequestHandler):
    4 def do_GET(self):
    5 self.send_response(200, 'OK')
    6 self.send_header('Content-type', 'text/html')
    7 self.end_headers()
    8 self.wfile.write( "hello" )
    9
    10 @staticmethod
    11 def serve_forever(port):
    12 HTTPServer(('', port), MyServer).serve_forever()
    13
    14 if __name__ == "__main__":
    15 MyServer.serve_forever(8080)
    Posted by manatlan to python web http server ... saved by 5 persons ... 1 comments ... 1 year, 2 months
showing 10, 25, 50 items per pages

Pages : 1

Flux RSS friendsnippetLatest snippets


More...