1
1
import select
2
2
import socket
3
3
import sys
4
- import threading
5
4
6
5
7
6
class Client ():
@@ -23,27 +22,33 @@ def start(self, server_port, server_ip):
23
22
self ._handle_messages ()
24
23
25
24
def _handle_messages (self ):
26
- socket_list = [sys .stdin , self ._socket ]
25
+ input_list = [sys .stdin , self ._socket ]
27
26
self ._prompt ()
28
27
while self ._working :
29
- ready_to_read , _ , _ = select .select (socket_list , [], [])
30
- for sock in ready_to_read :
31
- if sock == self ._socket :
32
- # incoming message from remote server
33
- data = sock .recv (4096 )
34
- if not data :
35
- print ('\n Disconnected from chat server' )
36
- sys .exit (0 )
37
- else :
38
- # print data
39
- sys .stdout .write (data .decode ('utf-8' ))
40
- self ._prompt ()
41
- else :
42
- # user entered a message
43
- msg = '[*] %s' % sys .stdin .readline ()
44
- self ._socket .send (msg .encode ('utf-8' ))
45
- self ._prompt ()
28
+ ready_to_read , _ , _ = select .select (input_list , [], [])
29
+ self ._handle_input_channel (ready_to_read )
30
+
31
+ def _handle_input_channel (self , ready_to_read ):
32
+ for input_channel in ready_to_read :
33
+ if input_channel is self ._socket :
34
+ self ._receive_data_from_server ()
35
+ else :
36
+ self ._send_message_to_server ()
37
+
38
+ def _receive_data_from_server (self ):
39
+ data = self ._socket .recv (4096 )
40
+ if not data :
41
+ print ('\n Disconnected from chat server' )
42
+ sys .exit (0 )
43
+ else :
44
+ print (data .decode ('utf-8' ))
45
+ self ._prompt ()
46
+
47
+ def _send_message_to_server (self ):
48
+ msg = '[*] %s' % input ()
49
+ self ._socket .send (msg .encode ('utf-8' ))
50
+ self ._prompt ()
46
51
47
52
def _prompt (self ):
48
- sys . stdout . write ('[Me] ' )
53
+ print ('[Me] ' , end = ' ' )
49
54
sys .stdout .flush ()
0 commit comments