Festelo

Untitled

Jan 4th, 2017
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.30 KB | None | 0 0
  1. ########
  2. #SERVER#
  3. ########
  4.  
  5. import socket
  6. import threading
  7.  
  8. clients = []
  9.  
  10. def printToAll(msg):
  11.     print(msg)
  12.     for c in clients:
  13.         c[0].send(b'\x01' + msg.encode())
  14.  
  15. def remove(id):
  16.     nick = clients[id][1]
  17.     clients.pop(id)
  18.     printToAll('Server: ' + nick + ' has been disconnected')
  19.        
  20. def Work(sock):
  21.     sock.send(b'\x00')
  22.     try:
  23.         nick = sock.recv(64).decode('UTF-8')
  24.     except:
  25.         return
  26.     clients.append((sock, nick))
  27.     printToAll('Server: ' + nick + ' has been connected')
  28.     id = len(clients)-1
  29.     while True:
  30.         try:
  31.             data = sock.recv(64).decode('UTF-8')
  32.             if not data:
  33.                 break
  34.             printToAll(nick + ': ' + data)
  35.         except:
  36.             break
  37.     remove(id)
  38.            
  39.  
  40. sock = socket.socket()
  41. sock.bind(('', 9090))
  42. sock.listen(10)
  43. while True:
  44.     conn, addr = sock.accept()
  45.     threading.Thread(target=Work, args=(conn,), daemon = True).start()
  46.  
  47. ########
  48. #Client#
  49. ########
  50.  
  51. import socket
  52. import threading
  53.  
  54. def Listen(sock):
  55.     while True:
  56.         data = sock.recv(64)
  57.         if data[0] == 1:
  58.             print(data[1:].decode('UTF-8'))
  59.    
  60. sock = socket.socket()
  61. sock.connect(('localhost', 9090))
  62. data = sock.recv(2)
  63. print(data)
  64. if data == b'\x00':
  65.     nick = input("Nick: ")
  66.     sock.send(nick.encode())
  67.  
  68.     threading.Thread(target=Listen, args=(sock,), daemon = True).start()
  69.    
  70.     while True:
  71.         sock.send(input().encode())
Advertisement
Add Comment
Please, Sign In to add comment