All pastes #543547 Raw Edit

Unnamed

public text v1 · immutable
·published 2007-06-06 03:22 UTC
rendered paste body
#!/usr/bin/python
import threading
import socket            #import the stuff we need
from socket import *


class SockClient(object):
    def __init__(self, host, port):
        self.host = host
        self.port = port
        self.addr = (self.host, self.port)

        sock = None
        for res in getaddrinfo(self.host, self.port, AF_UNSPEC, SOCK_STREAM):
            af, socktype, proto, canonname, sa = res
            try:
                sock = socket(af, socktype, proto)
            except error, msg:
                sock = None
                continue
            try:
                sock.connect(sa)              #the same as our old client
            except error, msg:
                sock.close()
                sock = None
                continue
            break
        if sock is None:
            raise RuntimeError, "could not connect socket"

        self.sock = sock
    def remotemsg(self,msg):
        self.sock.send(msg)
        del msg
    def close(self):
        self.sock.shutdown(SHUT_RDWR)
        self.sock.close()


class SockServer(threading.Thread):
    def __init__(self, port):
        self.port = port
        threading.Thread.__init__(self)
    def run(self):
        self.host = ''
        self.addr = (self.host, self.port)
        self.buf = 1024

        sock = None
        for res in getaddrinfo(self.host, self.port, AF_UNSPEC, SOCK_STREAM, 0, AI_PASSIVE):
            af, socktype, proto, canonname, sa = res
            try:
                sock = socket(af, socktype, proto)
            except error, msg:
                sock = None
                continue
            try:
                sock.bind(sa)                       #the same as our old server, but implemented as a thread
                sock.listen(1)
            except error, msg:
                sock.close()
                sock = None
                continue
            break
        if sock is None:
            raise RuntimeError, "could not open socket"

        self.sock,addr = sock.accept()
        self.mainloop()
    def mainloop(self):
        while 1:
            data = self.sock.recv(self.buf)
            if not data:
                    print "Remote user has terminated the session."
                    break
            else:
                    print 'remote_user:',data
                    print "message?:"
                    del data
        self.close()
    def close(self):
        self.sock.shutdown(SHUT_RDWR)
        self.sock.close()

send_ip = raw_input('What is other ip?')
send_port = input('What is other port?')
open_port = input('What is your open port?')                     #finally a system for managing input and output
SockServer(open_port).start()
fake = raw_input('Press return when you both have this message.')
insock = SockClient(send_ip, send_port)
while 1:
    print 'Message?:'
    msg = raw_input()
    if msg:
        insock.remotemsg(msg)