-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathserver_client.py
More file actions
66 lines (57 loc) · 1.62 KB
/
server_client.py
File metadata and controls
66 lines (57 loc) · 1.62 KB
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
from server_request import Server_Request
import select
class Server_Client:
def __init__(self, socket, addr, server):
self.socket = socket
self.addr = addr
self.server = server
#user properties
self.logged_in = False
self.username = ''
self.people_map = {
'John' : 'joe',
'Jill' : 'jane'
}
self.channel = None
def start(self):
self.socket.send(b'AUTHENTICATE;')
while True:
data = self.socket.recv(1024).decode('ascii')
request = Server_Request(data, self)
response = request.handle()
if response == 'CLIENT_CLOSE;':
self.socket.send(response.encode('acsii'))
break
self.socket.send(response.encode('ascii'))
self.socket.close()
def broadcast(self, text):
if self.channel != None:
self.server.broadcast(text, self.channel, self.username)
else:
response = 'NOCHANNEL;'
return self.socket.send(response.encode('ascii'))
def msg(self, text):
try:
name, message = text.split(' ', 1)
except:
name = text
message = ' '
response = self.server.message(message, self.username, name)
return self.socket.send(response.encode('ascii'))
def join(self, text):
self.channel = text
def list(self, text):
channels = self.server.list()
response = 'LIST;' + (', '.join(channels))
print('channel list ' +response)
return self.socket.send(response.encode('ascii'))
def disconnect(self, text):
self.logged_in == False
self.exit == True
response = 'CLIENT_CLOSE;'
return response
def online(self, text):
users = self.server.users()
response = 'USER_LIST;' + (', '.join(users))
print('user list ' + response)
return self.socket.send(response.encode('ascii'))