11573Srgrimes#!/usr/bin/python 21573Srgrimes# 31573Srgrimes# multicast_send.py 41573Srgrimes# 51573Srgrimes# Multicast test with PicoTCP sending and Linux receiving 61573Srgrimes# 71573Srgrimes# (sender) (Receiver) 8227753Stheraven# PicoTCP ------------------------ Linux 9227753Stheraven# mcast to 224.7.7.7 10227753Stheraven# 11227753Stheraven 12227753Stheravenfrom topology import * 131573Srgrimesimport socket, random, string, struct 141573Srgrimes 151573SrgrimesIF_ADDR = '172.16.1.1' 161573SrgrimesLINK_ADDR = '172.16.1.2' 171573SrgrimesMCAST_ADDR = '224.7.7.7' 181573SrgrimesLISTEN_PORT = 6667 191573SrgrimesSENDTO_PORT = 6667 201573SrgrimesMCASTSEND = "mcastsend:" + str(LINK_ADDR) + ":" + str(MCAST_ADDR) + ":" + str(SENDTO_PORT) + ":" + str(LISTEN_PORT) 21249808Semaste 221573Srgrimesprint MCASTSEND 231573Srgrimes 241573SrgrimesT = Topology() 251573Srgrimesnet1 = Network(T, "pyt0") 261573Srgrimesh1 = Host(T, net1, args=MCASTSEND) 271573Srgrimes 281573Srgrimess_udp = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 291573Srgrimess_udp.bind((MCAST_ADDR, LISTEN_PORT)) 301573Srgrimess_udp.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) 311573Srgrimess_udp.settimeout(5); 321573Srgrimes 331573Srgrimesmreq = struct.pack("=4s4s", socket.inet_aton(str(MCAST_ADDR)), socket.inet_aton(str(IF_ADDR))) 341573Srgrimess_udp.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq) 351573Srgrimes 361573Srgrimesraw_input("Press enter to continue ...") 371573Srgrimesstart(T) 381573Srgrimessleep(1) 391573Srgrimes 401573Srgrimeswhile True: 4192986Sobrien data = s_udp.recv(4096) 4292986Sobrien #print data 431573Srgrimes if 'end' in data: 441573Srgrimes print '\n\n' 451573Srgrimes print '+++++++++++++++++++++++++++++++++++++++++++++' 46227753Stheraven print '+++++ multicast_send test IS successful +++++' 471573Srgrimes print '+++++++++++++++++++++++++++++++++++++++++++++' 4816586Sjraynard print '\n\n' 49103012Stjr cleanup() 501573Srgrimes exit(0) 511573Srgrimes 521573Srgrimesprint '\n\n' 531573Srgrimesprint '+++++++++++++++++++++++++++++++++++++++++++++' 541573Srgrimesprint '+++++ multicast_send test NOT successful ++++' 55227753Stheravenprint '+++++++++++++++++++++++++++++++++++++++++++++' 561573Srgrimesprint '\n\n' 571573Srgrimescleanup() 581573Srgrimesexit(1) 59227753Stheraven