maroph

chat_cs.py

Feb 8th, 2020
336
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.56 KB | None | 0 0
  1. import socket
  2. import sys
  3.  
  4.  
  5. mode = 'quit'
  6. while True:
  7.     resp = input('Run as server or client (Ss/Cc): ')
  8.     if resp in ['S', 's']:
  9.         mode = 'server'
  10.         break
  11.     if resp in ['C', 'c']:
  12.         mode = 'client'
  13.         break
  14.     if resp in ['Q', 'q']:
  15.         mode = 'quit'
  16.         break
  17.  
  18. if mode == 'quit':
  19.     sys.exit(0)
  20.  
  21. if mode == 'server':
  22.     server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  23.     server_socket.bind(('0.0.0.0', 8081))
  24.     server_socket.listen()
  25.     print('Server: Waiting for connection')
  26.     connection, address = server_socket.accept()
  27.     print('Server: Client connected, address:', address)
  28. else:
  29.     address = input('Client: What is the servers IP address? (default: 127.0.0.1): ')
  30.     if not address:
  31.         address = '127.0.0.1'
  32.     connection = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  33.     connection.connect((address, 8081))
  34.     print('Client: Connected to server at', address)
  35.     name = input('Client: enter your chat name: ')
  36.     if not name:
  37.         name = 'anonymous'
  38.     connection.send(bytes(name + " connected to the server", 'utf-8'))
  39.  
  40. if mode == 'server':
  41.     prompt = 'Server: '
  42. else:
  43.     prompt = 'Client: '
  44.  
  45. while True:
  46.     message = connection.recv(1024)
  47.     if not message:
  48.         break
  49.     print(prompt, message.decode())
  50.     new_message = input(prompt + 'type a message: ')
  51.     if new_message == 'quit':
  52.         break
  53.     connection.send(new_message.encode())
  54.  
  55. print(prompt + 'stopped')
  56. connection.close()
  57. if mode == "server":
  58.     server_socket.close()
Advertisement
Add Comment
Please, Sign In to add comment