-
Notifications
You must be signed in to change notification settings - Fork 0
/
server.py
126 lines (96 loc) · 4.38 KB
/
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
import socket, threading
server_ip = '127.0.0.1'
server_port = 999
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
clients = {}
server.bind((server_ip,server_port))
server.listen()
print("Waiting for connections\n")
def redirectMessages(client_socket):
while(True):
try:
message = str(client_socket.recv(1024).decode())
received_message = message.split(":")
print(received_message)
if(len(received_message) == 3):
sender = received_message[0]
receiver = received_message[1]
message = sender + ":" + received_message[2]
if(receiver in clients.keys()):
for client_name in clients.keys():
if(client_name == receiver):
receiver_socket = clients.get(client_name)
receiver_socket.send(message.encode())
break
else:
print("Receiver does not exist")
elif(len(received_message) == 4):
sender = received_message[0]
receiver = received_message[1]
file_name = received_message[2]
contents = received_message[3]
message = sender + ":" + file_name + ":" + contents
if(receiver in clients.keys()):
for client_name in clients.keys():
if(client_name == receiver):
receiver_socket = clients.get(client_name)
receiver_socket.send(message.encode())
break
else:
print("Receiver does not exist")
elif(len(received_message) == 5):
sender = received_message[0]
receiver = received_message[1]
file_name = received_message[2]
contents = received_message[3]
message = sender + ":" + file_name + ":" + contents + ":" + received_message[4]
if(receiver in clients.keys()):
for client_name in clients.keys():
if(client_name == receiver):
receiver_socket = clients.get(client_name)
receiver_socket.send(message.encode())
break
else:
print("Receiver does not exist")
else:
print("Invalid message format\nmessage:", message,"\nreceived message:",received_message)
except ConnectionResetError as c:
print(c)
for name, socket in clients.items():
if(client_socket == socket):
clients.pop(socket)
break
print(clients.keys())
except WindowsError as windows_error:
print(windows_error)
for name, socket in clients.items():
if(client_socket == socket):
clients.pop(socket)
break
print(clients.keys())
# def receiveMessages(client_socket):
# while(True):
# print("redirect messaging")
# message = str(client_socket.recv(1024).decode())
# print(message)
# if(message.startswith("DEVELOPER") and "DEVELOPER" in clients.keys()):
# sock = clients.get("DEVELOPER")
# sock.send(1024).encode()
# elif(message.startswith("MANAGER") and "MANAGER" in clients.keys()):
# sock = clients.get("MANAGER")
# sock.send(1024).encode()
# elif(message.startswith("TESTER") and "TESTER" in clients.keys("TESTER")):
# sock = clients.get("TESTER")
# sock.send(1024).encode()
# else:
# print("The client you want to contact is offline")
while(True):
client_socket, client_address = server.accept()
print(client_address," is connected")
client_name = client_socket.recv(1024).decode()
print(client_name)
clients.update({client_name : client_socket})
print(clients.keys())
client_socket.send("Connected to server successfully".encode())
thread = threading.Thread(target=redirectMessages, args=(client_socket,))
thread.start()