c114558502f5f316371497e22fcadfdbfbcaceb8
[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 response:
51 if response == 'Timeout':
52 print 'data: {} - TIMEOUT!'.format(data)
53 conn.send('TIMEOUT!\n')
54 elif response[0] == 'A':
55 print 'data: {} - ACK!'.format(data)
56 conn.send('ACK!\n')
57 elif response[0] == 'R':
58 print 'data: {} - RST!'.format(data)
59 conn.send('RST!\n')
60 elif response[0] == 'SA':
61 print 'data: {} - SYNACK!'.format(data)
62 conn.send('SYNACK!\n')
63 else:
64 print 'data: {}'.format(data)
65
66 print 'closed'
67 conn.close()
68 exit()