top of page

//Brodcasting UDP Packets using BSD-based functions

//Autor: Mohamed Abdelsalam

//Systems Engineering Center [SEC], Dec-2014

 

import Cocoa

 

//////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////

/////////Brodcasting UDP Packets using BSD-based functions////////

//////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////

 

//Set local ip address............................................

var ipaddrStr = "192.168.13.54"

//................................................................

 

//Set input broadcast data .......................................

var txStr = "test test test test test test test"

var strLen = countElements(txStr)

//................................................................

 

//////////////////////////////////////////////////////////////////

 

//Get socket......................................................

let s = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP);

//................................................................

 

//................................................................

var sin_me = sockaddr_in(

    sin_len: __uint8_t(sizeof(sockaddr_in)),

    sin_family: sa_family_t(AF_INET), //IP network

    sin_port: in_port_t(0), //port number = 0

    sin_addr: in_addr(s_addr: inet_addr(ipaddrStr)),

    sin_zero: (0,0,0,0,0,0,0,0)

);

var sock_addr_me = sockaddr(sa_len: 0, sa_family: 0,

    sa_data: (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0))

memcpy(&sock_addr_me, &sin_me, UInt(sizeof(sockaddr_in)))

bind(s, &sock_addr_me, socklen_t(sizeof(sockaddr_in)))

//................................................................

 

//................................................................

var port_other:Int = 0;

var hostAddr_other = inet_addr("255.255.255.255");

 

var sin_other = sockaddr_in(

    sin_len: __uint8_t(sizeof(sockaddr_in)),

    sin_family: sa_family_t(AF_INET),

    sin_port: in_port_t(0),

    sin_addr: in_addr(s_addr: hostAddr_other.bigEndian),

    sin_zero: (0,0,0,0,0,0,0,0)

);

 

var sock_addr_other = sockaddr(sa_len: 0, sa_family: 0,

    sa_data: (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0))

memcpy(&sock_addr_other, &sin_me, UInt(sizeof(sockaddr_in)))

//................................................................

 

//................................................................

var broadcastEnable:Int=1;

var ret=setsockopt(s, SOL_SOCKET, SO_BROADCAST,

    &broadcastEnable, socklen_t(sizeof(socklen_t)));

var err:NSErrorPointer = nil;

let dataStr = NSData(bytes: &txStr, length: strLen)

var dataPtr:UnsafePointer = UnsafePointer<Void>(dataStr.bytes);

sendto(s, UnsafePointer<UInt8>(dataStr.bytes),

    UInt(dataStr.length), Int32(0), &sock_addr_other,

    socklen_t(sizeof(sockaddr_in)))

//................................................................

 

 

//////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////

//////////////////////////////END/////////////////////////////////

//////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////

 

 

 

bottom of page