makefile fix and table with results so far added to ex3
[tt2015.git] / a3 / code / jtorx / client / helloworld.py
1 #!/usr/bin/python
2 from sender import Sender
3 import sys
4 import socket
5
6 JTORXPORT = 8888
7
8 if __name__ == "__main__":
9 serverPort = 10000
10 if len(sys.argv) > 1:
11 serverPort = int(sys.argv[1])
12 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
13 s.bind(('', JTORXPORT))
14 s.listen(1)
15 print 'Listening on port {} for JTorx'.format(JTORXPORT)
16 conn, addr = s.accept()
17 print 'Connected by JTorx at {}'.format(addr)
18 sender = None
19 seqnr = None
20 response = ''
21 while True:
22 data = conn.recv(1024)
23 if not data:
24 break
25 data = data.strip()
26 if data == 'Listen?':
27 sender = Sender(serverIP="127.0.0.1", networkInterface="lo", isLocal=True, serverPort=serverPort, waitTime=1, isVerbose=0)
28 response = ''
29 if data == 'SYN?':
30 seqnr = 100
31 print 'S: {}'.format(seqnr)
32 response = sender.sendInput('S', seqnr, seqnr)
33 if data == 'ACK?':
34 seqnr += 1
35 print 'A: {}'.format(seqnr)
36 response = sender.sendInput('A', seqnr, sender.lastSeqReceived + 1)
37 if data == 'FINACK?':
38 seqnr += 1
39 print 'FA: {}'.format(seqnr)
40 response = sender.sendInput("FA", seqnr, sender.lastSeqReceived + 1)
41 if data == 'FIN?':
42 seqnr += 1
43 print 'F: {}'.format(seqnr)
44 response = sender.sendInput("F", seqnr, sender.lastSeqReceived + 1)
45 if data == 'RST?':
46 seqnr += 1
47 print 'RP: {}'.format(seqnr)
48 response = sender.sendInput("RP", seqnr, 0)
49 sender.sendReset()
50 if data == 'DAT?':
51 print 'DAT: {} sending: a'.format(seqnr)
52 response = sender.sendInput('A', seqnr, sender.lastSeqReceived + 1)
53 response = sender.sendInput('PA', seqnr, sender.lastSeqReceived + 1, data='a\n')
54 seqnr += 2
55 if response:
56 print 'response: {}'.format(response)
57 if response == 'Timeout':
58 print 'data: {} - TIMEOUT!'.format(data)
59 conn.send('TIMEOUT!\n')
60 elif response[0] == 'A' or response[0] == 'PA':
61 print 'data: {} - ACK!'.format(data)
62 conn.send('ACK!\n')
63 elif response[0] == 'R':
64 print 'data: {} - RST!'.format(data)
65 conn.send('RST!\n')
66 elif response[0] == 'SA':
67 print 'data: {} - SYNACK!'.format(data)
68 conn.send('SYNACK!\n')
69 else:
70 print 'data: {}'.format(data)
71
72 print 'closed'
73 conn.close()
74 exit()