Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import socket
- import select
- import time
- class Server(object):
- def __init__(self):
- self.host = ''
- self.port = 4242
- self.client_list = list()
- self.client_info = list()
- self.exit = False
- self.main_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- self.main_socket.bind((self.host, self.port))
- self.main_socket.listen(5)
- print("Le serveur écoute à présent sur le port {}".format(self.port))
- def accept(self):
- accept_list, wlist, xlist = select.select([self.main_socket],[], [], 0.05)
- for client in accept_list:
- client_socket, client_info = client.accept()
- self.client_list.append(client_socket)
- self.client_info.append(client_info)
- print("Client connected !")
- def recv(self):
- sending_client = list()
- try:
- sending_client, wlist, xlist = select.select(self.client_list, [], [], 0.05)
- except select.error:
- pass
- for client in sending_client:
- try:
- index = self.client_list.index(client)
- client_address = self.client_info[index]
- data = client.recv(1024)
- message = data.decode()
- print("{}> {}".format(client_address, message))
- message = "Hello !"
- data = message.encode()
- #time.sleep(2)
- client.send(data)
- print("Server> {}".format(message))
- except ConnectionResetError:
- self.client_list[index].close()
- del self.client_list[index]
- del self.client_info[index]
- def run(self):
- while not self.exit:
- self.accept()
- self.recv()
- print("Closing connections")
- for client in self.client_list:
- client.close()
- self.main_socket.close()
- test = Server()
- test.run()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement