#!/usr/bin/env python
import sys
import os
import socket
from threading import Thread

class Receiver(Thread):
    def __init__(self, sock):
        Thread.__init__(self)
        self.src = sock
    def run(self):
        for data in iter(lambda: self.src.recv(8192), ""):
            os.write(sys.stdout.fileno(), data)

def main(args):
    if len(args) < 3:
        print >>sys.stderr, "usage: %s host port" % args[0]
        sys.exit(1)
    if sys.platform == 'win32':
        sys.stdin.setmode(os.O_BINARY)
        sys.stdout.setmode(os.O_BINARY)
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.connect((args[1], int(args[2])))
    receiver = Receiver(sock)
    receiver.start()
    for data in iter(lambda: os.read(sys.stdin.fileno(), 8192), ""):
        sock.send(data)
    sock.shutdown(socket.SHUT_WR)
    receiver.join()
    sock.close()
    return 0

if __name__ == '__main__':
    main(sys.argv)
