Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/python # This is server.py file
- import socket # Import socket module
- from thread import *
- import select
- connection_list = [] # List to hold all connected clients
- address_list = [] # List to hold all client addresses
- RECV_BUFFER = 4096
- PORT = 1337
- HOST = "0.0.0.0"
- server_socket = socket.socket() # Create a socket object
- server_socket.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
- server_socket.bind((HOST, PORT)) # Bind to the port
- server_socket.listen(10) # Now wait for client connection.
- server_socket.setblocking(False)
- connection_list.append(server_socket)
- address_list.append(HOST)
- print("Started chat server on port " + str(PORT))
- while True:
- try:
- read_sockets, write_sockets, error_sockets = select.select(connection_list,[],connection_list)
- for current_socket in read_sockets:
- if current_socket == server_socket:
- client_socket, client_address = server_socket.accept()
- connection_list.append(client_socket)
- address_list.append(client_address)
- print( "Client (%s, %s) connected" % client_address)
- client_socket.send("Welcome to the server!\n")
- client_socket.send("There are 0 users online\n")
- else:
- try:
- data = current_socket.recv(RECV_BUFFER)
- current_socket_addr = address_list[connection_list.index(current_socket)]
- if data:
- for current_send_socket in connection_list:
- if current_send_socket != server_socket:
- current_send_socket.send("<"+current_socket_addr[0]+"> "+data)
- continue
- print("<"+current_socket_addr[0]+"> "+data[:-1])
- else:
- print ("Client (%s, %s) has disconnected" % current_socket_addr)
- current_socket.close()
- connection_list.remove(current_socket)
- except:
- current_socket_addr = address_list[connection_list.index(current_socket)]
- print ("Client (%s, %s) is offline" % current_socket_addr)
- current_socket.close()
- connection_list.remove(current_socket)
- continue
- except (KeyboardInterrupt, SystemExit):
- print("Shutting down server...")
- print("Disconnecting all clients...")
- for current_client in connection_list:
- if current_client != server_socket:
- current_client.send("[Server] Server shutting down... \n")
- current_client.close()
- print("Closing server socket...")
- server_socket.shutdown(socket.SHUT_RDWR)
- server_socket.close()
- print("Server shut down successfully")
- raise
- server_socket.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement