Created
May 13, 2016 15:29
-
-
Save hackerdem/a86f4f8cb069464dd97efad5d4dc407c to your computer and use it in GitHub Desktop.
Chat client and server application in python
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import socket, sys, threading | |
PORT = 4444 | |
class ChatServer(threading.Thread): | |
def __init__(self, port, host='192.168.1.3'): | |
threading.Thread.__init__(self) | |
self.port = port | |
self.host = host | |
self.server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) | |
self.users = {} | |
try: | |
self.server.bind((self.host, self.port)) | |
except socket.error: | |
print('Bind failed %s' % (socket.error)) | |
sys.exit() | |
self.server.listen(10) | |
def exit(self): | |
self.server.close() | |
def run_thread(self, conn, addr): | |
print('Client connected with ' + addr[0] + ':' + str(addr[1])) | |
while True: | |
data = conn.recv(1024) | |
reply = b'OK...' + data | |
print(reply) | |
conn.sendall(reply) | |
conn.close() | |
def run(self): | |
print('Waiting for connections on port %s' % (self.port)) | |
while True: | |
conn, addr = self.server.accept() | |
threading.Thread(target=self.run_thread, args=(conn, addr)).start() | |
class ChatClient(object): | |
def __init__(self, port, host='192.168.1.3'): | |
self.host = host | |
self.port = port | |
self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) | |
self.socket.connect((self.host, port)) | |
def send_message(self, msg): | |
pass | |
if __name__ == '__main__': | |
server = ChatServer(PORT) | |
server.run() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment