UDP Sockets use example
Dependencies: EthernetNetIf mbed
UDPSocketExample.cpp@0:5874b7a688d1, 2010-08-06 (annotated)
- Committer:
- donatien
- Date:
- Fri Aug 06 11:19:16 2010 +0000
- Revision:
- 0:5874b7a688d1
Who changed what in which revision?
User | Revision | Line number | New 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 | } |