Files
my-os-project2/kernel/picotcp/test/python/reassembly.py
2025-10-29 14:29:06 +01:00

63 lines
1.6 KiB
Python
Executable File

#!/usr/bin/python
#
# reassemby.py
#
# Reassemly test with PicoTCP receiving and Linux sending
#
# (receiver) (Sender)
# PicoTCP ------------------------ Linux
#
# An udpecho is started which will receive DATASIZE bytes in one go
# from the socket. The Linux will send DATASIZE bytes in one go to the
# udpecho, this data will be sent fragmented. The udpecho is to reassemble
# this data and echo it back.
#
from topology import *
import socket, random, string
SRC_ADDR = ''
LINK_ADDR = '172.16.1.2'
SRC_PORT = 5555
LISTEN_PORT = 6667
SENDTO_PORT = 5555
DATASIZE = 3400
UDPECHO = "udpecho:" + str(LINK_ADDR) + ":" + str(LISTEN_PORT) + ":" + str(SENDTO_PORT) + ":" + str(DATASIZE)
print UDPECHO
T = Topology()
net1 = Network(T, "pyt0")
h1 = Host(T, net1, args=UDPECHO)
str_send = ''.join(random.choice(string.ascii_lowercase) for x in range(DATASIZE))
#print str_send
s_udp = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s_udp.bind((SRC_ADDR, SRC_PORT))
s_udp.settimeout(5);
raw_input("Press enter to continue ...")
start(T)
while True:
s_udp.sendto(str_send, (LINK_ADDR, LISTEN_PORT))
data = s_udp.recv(DATASIZE)
#print len(data)
if len(data) == DATASIZE:
print '\n\n'
print '+++++++++++++++++++++++++++++++++++++++++++++'
print '+++++ reassembly test IS successful +++++'
print '+++++++++++++++++++++++++++++++++++++++++++++'
print '\n\n'
cleanup()
exit(0)
print '\n\n'
print '+++++++++++++++++++++++++++++++++++++++++++++'
print '+++++ reassembly test NOT successful ++++'
print '+++++++++++++++++++++++++++++++++++++++++++++'
print '\n\n'
cleanup()
exit(1)