Advertisement
Guest User

Untitled

a guest
Jan 30th, 2018
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.73 KB | None | 0 0
  1. import socket
  2. import select
  3. import time
  4. class Server(object):
  5.  
  6.   def __init__(self):
  7.     self.host = ''
  8.     self.port = 4242
  9.     self.client_list = list()
  10.     self.client_info = list()
  11.     self.exit = False
  12.  
  13.     self.main_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  14.     self.main_socket.bind((self.host, self.port))
  15.     self.main_socket.listen(5)
  16.     print("Le serveur écoute à présent sur le port {}".format(self.port))
  17.  
  18.   def accept(self):
  19.     accept_list, wlist, xlist = select.select([self.main_socket],[], [], 0.05)
  20.     for client in accept_list:
  21.       client_socket, client_info = client.accept()
  22.       self.client_list.append(client_socket)
  23.       self.client_info.append(client_info)
  24.       print("Client connected !")
  25.  
  26.   def recv(self):
  27.     sending_client = list()
  28.     try:
  29.       sending_client, wlist, xlist = select.select(self.client_list, [], [], 0.05)
  30.     except select.error:
  31.       pass
  32.  
  33.     for client in sending_client:
  34.       try:
  35.         index = self.client_list.index(client)
  36.         client_address = self.client_info[index]
  37.         data = client.recv(1024)
  38.         message = data.decode()
  39.         print("{}> {}".format(client_address, message))
  40.  
  41.         message = "Hello !"
  42.         data = message.encode()
  43.         #time.sleep(2)
  44.         client.send(data)
  45.         print("Server> {}".format(message))
  46.       except ConnectionResetError:
  47.         self.client_list[index].close()
  48.         del self.client_list[index]
  49.         del self.client_info[index]
  50.  
  51.   def run(self):
  52.     while not self.exit:
  53.       self.accept()
  54.       self.recv()
  55.  
  56.     print("Closing connections")
  57.     for client in self.client_list:
  58.       client.close()
  59.  
  60.     self.main_socket.close()
  61.  
  62. test = Server()
  63. test.run()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement