forked from EricsonWillians/SocialPie
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbr_pychat_server.py
60 lines (51 loc) · 2.19 KB
/
br_pychat_server.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#
# br_pychat_server.py
#
# Copyright 2015 Ericson Willians (Rederick Deathwill) <EricsonWRP@ERICSONWRP-PC>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
# MA 02110-1301, USA.
#
#
import threading
import socketserver
CONNECTION_PORT = 9311
connections = {}
class TCPHandler(socketserver.BaseRequestHandler):
def handle(self):
try:
cur_thread = threading.current_thread()
print("'{ip}' requested connection.".format(ip = self.client_address[0]))
print("Connection request granted.")
if threading.activeCount() > 3:
print("Number of current client connections: {n}".format(n = threading.activeCount() - 3))
if self.client_address[0] not in connections.keys():
connections[self.client_address[0]] = self.request
while 1:
received_from_client = self.request.recv(10000)
for connection in connections:
connections[connection].sendall(bytes("'{ip}': {data}".format(ip = self.client_address[0], data = received_from_client), "utf-8"))
except ConnectionResetError:
pass
class TCPServer(socketserver.ThreadingMixIn, socketserver.TCPServer):
pass
if __name__ == '__main__':
HOST = "localhost"
print("Chat Server Project initiated.")
print("Waiting for incoming connection requests...")
server = TCPServer((HOST, CONNECTION_PORT), TCPHandler)
server_thread = threading.Thread(target = server.serve_forever)
server_thread.daemon = True
server_thread.start()