UDP Sockets use example

Dependencies:   EthernetNetIf mbed

Committer:
donatien
Date:
Fri Aug 06 11:19:16 2010 +0000
Revision:
0:5874b7a688d1

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
donatien 0:5874b7a688d1 1 #include "mbed.h"
donatien 0:5874b7a688d1 2 #include "EthernetNetIf.h"
donatien 0:5874b7a688d1 3 #include "UDPSocket.h"
donatien 0:5874b7a688d1 4
donatien 0:5874b7a688d1 5 EthernetNetIf eth;
donatien 0:5874b7a688d1 6 UDPSocket udp;
donatien 0:5874b7a688d1 7
donatien 0:5874b7a688d1 8 void onUDPSocketEvent(UDPSocketEvent e)
donatien 0:5874b7a688d1 9 {
donatien 0:5874b7a688d1 10 switch(e)
donatien 0:5874b7a688d1 11 {
donatien 0:5874b7a688d1 12 case UDPSOCKET_READABLE: //The only event for now
donatien 0:5874b7a688d1 13 char buf[64] = {0};
donatien 0:5874b7a688d1 14 Host host;
donatien 0:5874b7a688d1 15 while( int len = udp.recvfrom( buf, 63, &host ) )
donatien 0:5874b7a688d1 16 {
donatien 0:5874b7a688d1 17 if( len <= 0 )
donatien 0:5874b7a688d1 18 break;
donatien 0:5874b7a688d1 19 printf("From %d.%d.%d.%d: %s\n", host.getIp()[0], host.getIp()[1], host.getIp()[2], host.getIp()[3], buf);
donatien 0:5874b7a688d1 20 }
donatien 0:5874b7a688d1 21 break;
donatien 0:5874b7a688d1 22 }
donatien 0:5874b7a688d1 23 }
donatien 0:5874b7a688d1 24
donatien 0:5874b7a688d1 25 int main() {
donatien 0:5874b7a688d1 26 printf("Setting up...\n");
donatien 0:5874b7a688d1 27 EthernetErr ethErr = eth.setup();
donatien 0:5874b7a688d1 28 if(ethErr)
donatien 0:5874b7a688d1 29 {
donatien 0:5874b7a688d1 30 printf("Error %d in setup.\n", ethErr);
donatien 0:5874b7a688d1 31 return -1;
donatien 0:5874b7a688d1 32 }
donatien 0:5874b7a688d1 33 printf("Setup OK\n");
donatien 0:5874b7a688d1 34
donatien 0:5874b7a688d1 35 Host multicast(IpAddr(239, 192, 1, 100), 50000, NULL); //Join multicast group on port 50000
donatien 0:5874b7a688d1 36
donatien 0:5874b7a688d1 37 udp.setOnEvent(&onUDPSocketEvent);
donatien 0:5874b7a688d1 38
donatien 0:5874b7a688d1 39 udp.bind(multicast);
donatien 0:5874b7a688d1 40
donatien 0:5874b7a688d1 41 Timer tmr;
donatien 0:5874b7a688d1 42 tmr.start();
donatien 0:5874b7a688d1 43 while(true)
donatien 0:5874b7a688d1 44 {
donatien 0:5874b7a688d1 45 Net::poll();
donatien 0:5874b7a688d1 46 if(tmr.read() > 5)
donatien 0:5874b7a688d1 47 {
donatien 0:5874b7a688d1 48 tmr.reset();
donatien 0:5874b7a688d1 49 const char* str = "Hello world!";
donatien 0:5874b7a688d1 50 udp.sendto( str, strlen(str), &multicast );
donatien 0:5874b7a688d1 51 printf("%s\n", str);
donatien 0:5874b7a688d1 52 }
donatien 0:5874b7a688d1 53 }
donatien 0:5874b7a688d1 54
donatien 0:5874b7a688d1 55
donatien 0:5874b7a688d1 56 }