--- /dev/null
+#!/usr/bin/python
+from sender import Sender
+import sys
+import socket
+
+JTORXPORT = 8888
+
+if __name__ == "__main__":
+ serverPort = 10000
+ if len(sys.argv) > 1:
+ serverPort = int(sys.argv[1])
+ s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+ s.bind(('', JTORXPORT))
+ s.listen(1)
+ print 'Listening on port {} for JTorx'.format(JTORXPORT)
+ conn, addr = s.accept()
+ print 'Connected by JTorx at {}'.format(addr)
+ sender = None
+ seqnr = None
+ response = ''
+ while True:
+ data = conn.recv(1024)
+ if not data:
+ break
+ data = data.strip()
+ if data == 'Listen?':
+ sender = Sender(serverIP="127.0.0.1", networkInterface="lo", isLocal=True, serverPort=serverPort, waitTime=1, isVerbose=0)
+ response = ''
+ if data == 'SYN?':
+ seqnr = 100
+ print 'S: {}'.format(seqnr)
+ response = sender.sendInput('S', seqnr, seqnr)
+ if data == 'ACK?':
+ seqnr += 1
+ print 'A: {}'.format(seqnr)
+ response = sender.sendInput('A', seqnr, sender.lastSeqReceived + 1)
+ if data == 'FINACK?':
+ seqnr += 1
+ print 'FA: {}'.format(seqnr)
+ response = sender.sendInput("FA", seqnr, sender.lastSeqReceived + 1)
+ if data == 'FIN?':
+ seqnr += 1
+ print 'F: {}'.format(seqnr)
+ response = sender.sendInput("F", seqnr, sender.lastSeqReceived + 1)
+ if data == 'RST?':
+ seqnr += 1
+ print 'RP: {}'.format(seqnr)
+ response = sender.sendInput("RP", seqnr, 0)
+ sender.sendReset()
+ if data == 'DAT?':
+ print 'DAT: {} sending: a'.format(seqnr)
+ response = sender.sendInput('A', seqnr, sender.lastSeqReceived + 1)
+ response = sender.sendInput('PA', seqnr, sender.lastSeqReceived + 1, data='a\n')
+ seqnr += 2
+ if response:
+ print 'response: {}'.format(response)
+ if response == 'Timeout':
+ print 'data: {} - TIMEOUT!'.format(data)
+ conn.send('TIMEOUT!\n')
+ elif response[0] == 'A' or response[0] == 'PA':
+ print 'data: {} - ACK!'.format(data)
+ conn.send('ACK!\n')
+ elif response[0] == 'R':
+ print 'data: {} - RST!'.format(data)
+ conn.send('RST!\n')
+ elif response[0] == 'SA':
+ print 'data: {} - SYNACK!'.format(data)
+ conn.send('SYNACK!\n')
+ else:
+ print 'data: {}'.format(data)
+
+ print 'closed'
+ conn.close()
+ exit()