-
Notifications
You must be signed in to change notification settings - Fork 0
/
CN_Echo_Client.py
74 lines (34 loc) · 2.22 KB
/
CN_Echo_Client.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
import newSocket as socketLib
class CN_Echo_Client(object):
""" Computer Networks Chapter 4: Sockets. UDP Client example. """
def __init__(self,Server_Address=(socketLib.findByDomain("T3"),80)):
myAddress = (socketLib.findByDomain("T3"),84)
socket, AF_INET, SOCK_DGRAM, timeout = socketLib.socket, socketLib.AF_INET, socketLib.SOCK_DGRAM, socketLib.timeout
self.Server_Address = Server_Address
with socket(AF_INET,SOCK_DGRAM) as sock:
sock.bind(myAddress)
sock.settimeout(2.0) # 2 second timeout
print ("UDP_Client started for CN_Echo_Server at IP address {} on port {}".format(
Server_Address[0],Server_Address[1])
)
while True:
str_message_to_send = input("Enter message to send to echo server:\n")
if not str_message_to_send:
break
sent_bytearray_message = bytearray(str_message_to_send,encoding="UTF-8")
bytes_sent = sock.sendto(sent_bytearray_message, self.Server_Address)
print ("{} bytes sent".format(bytes_sent))
address_received = ("a.b.c.d",(-1))
while Server_Address != address_received:
try:
bytearray_message_received, address_received = sock.recvfrom(1500)
if address_received != self.Server_Address:
print( "\n message from {} ignored".format(address_received))
except timeout:
continue
str_message_received = bytearray_message_received.decode("UTF-8")
print ("\n{} bytes received".format(len(bytearray_message_received)))
print ("message received:\n{}".format(str_message_received))
print ("UDP_Client ended")
if __name__ == '__main__':
CN_Echo_Client()