#!/usr/bin/env python # pyCHAT # author: Ahiri import socket import threading import sys mode = raw_input('Server(s) or Client(c) mode: ') while (mode=='c' or mode=='s')==False: print 'ERROR: Response must be "s" or "c"' mode = raw_input('Server(s) or Client(c) mode: ') if mode=='c': host = raw_input('Host address: ') while len(host.split('.'))!=4 or host.split('.')[0]>'255' or host.split('.')[1]>'255' or host.split('.')[2]>'255' or host.split('.')[3]>'255': print 'ERROR: IP address not formatted correctly' host = raw_input('Host address: ') port = int(raw_input('Port: ')) while port<0 or port>65535: print 'ERROR: Port number out of range' port = int(raw_input('Port: ')) conn={} s=1 r=0 if mode=='c': #Start Client conn[s] = socket.socket(socket.AF_INET,socket.SOCK_STREAM) conn[s].connect((host,port)) conn[s].send('::transmit') conn[r] = socket.socket(socket.AF_INET,socket.SOCK_STREAM) conn[r].connect((host,port)) else: #Start Server socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM) socket.bind(('',port)) socket.listen(5) c1,a1 = socket.accept() c2,a2 = socket.accept() host = a1[0] if c1.recv(10)=='::transmit': conn[s] = c2 conn[r] = c1 else: conn[s] = c2 conn[r] = c1 del c1, a1, c2, a2, socket class receive(threading.Thread): def run(self): while 1: data = conn[r].recv(2048) if data: print '\033[92m'+data+'\033[0m' receive().start() try: while 1: conn[s].send(raw_input()) except: print 'Disconnecting' conn[s].close() conn[r].close()