UDP server example project for the NetworkAPI library

Dependencies:   EthernetInterface NetworkAPI mbed-rtos mbed

Fork of TCP_Client_Example by Roy van Dam

Committer:
NegativeBlack
Date:
Wed Jul 18 11:24:12 2012 +0000
Revision:
8:d55cac25e637
Parent:
6:33b57f606f2b
Child:
9:4536224842d4
Added simple UDP communication example.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
donatien 0:bb128f0e952f 1 #include "mbed.h"
donatien 0:bb128f0e952f 2 #include "EthernetInterface.h"
donatien 0:bb128f0e952f 3
NegativeBlack 6:33b57f606f2b 4 #include "NetworkAPI/ip/address.hpp"
NegativeBlack 8:d55cac25e637 5 #include "NetworkAPI/udp/socket.hpp"
donatien 0:bb128f0e952f 6
NegativeBlack 6:33b57f606f2b 7 int
NegativeBlack 6:33b57f606f2b 8 main()
NegativeBlack 6:33b57f606f2b 9 {
NegativeBlack 6:33b57f606f2b 10 EthernetInterface interface;
NegativeBlack 6:33b57f606f2b 11 interface.init();
NegativeBlack 6:33b57f606f2b 12 interface.connect();
NegativeBlack 6:33b57f606f2b 13 printf("IP Address is %s\n\r", interface.getIPAddress());
NegativeBlack 8:d55cac25e637 14
NegativeBlack 8:d55cac25e637 15 network::udp::Socket socket;
NegativeBlack 8:d55cac25e637 16 char buffer[1024];
NegativeBlack 8:d55cac25e637 17 int result = 0;
NegativeBlack 8:d55cac25e637 18
NegativeBlack 8:d55cac25e637 19 if (socket.open() < 0) {
NegativeBlack 8:d55cac25e637 20 printf("Failed to open UDP Socket\n\r");
NegativeBlack 8:d55cac25e637 21 return -1;
NegativeBlack 8:d55cac25e637 22 }
NegativeBlack 8:d55cac25e637 23
NegativeBlack 8:d55cac25e637 24 if (socket.bind(42) < 0) {
NegativeBlack 8:d55cac25e637 25 printf("Failed to bind UDP Socket to port 42\n\r");
NegativeBlack 8:d55cac25e637 26 }
donatien 0:bb128f0e952f 27
NegativeBlack 8:d55cac25e637 28 while (true) {
NegativeBlack 8:d55cac25e637 29 result = socket.receive(buffer, 1024);
NegativeBlack 8:d55cac25e637 30
NegativeBlack 8:d55cac25e637 31 switch (result) {
NegativeBlack 8:d55cac25e637 32 case -1:
NegativeBlack 8:d55cac25e637 33 printf("Failed to read from UDP Socket\n\r");
NegativeBlack 8:d55cac25e637 34 return -1;
NegativeBlack 8:d55cac25e637 35
NegativeBlack 8:d55cac25e637 36 case 0:
NegativeBlack 8:d55cac25e637 37 printf("Nothing received...?\n\r");
NegativeBlack 8:d55cac25e637 38 continue;
NegativeBlack 8:d55cac25e637 39
NegativeBlack 8:d55cac25e637 40 default:
NegativeBlack 8:d55cac25e637 41 printf("Received %d bytes from %s:%d\n\r", result,
NegativeBlack 8:d55cac25e637 42 socket.getRemoteEndpoint().getAddress().toString().c_str(),
NegativeBlack 8:d55cac25e637 43 socket.getRemoteEndpoint().getPort());
NegativeBlack 8:d55cac25e637 44
NegativeBlack 8:d55cac25e637 45 if (!socket.getRemoteEndpoint().getAddress().isEmpty()) {
NegativeBlack 8:d55cac25e637 46 socket.send(buffer, result, socket.getRemoteEndpoint());
NegativeBlack 8:d55cac25e637 47 }
NegativeBlack 8:d55cac25e637 48 continue;
NegativeBlack 8:d55cac25e637 49 }
NegativeBlack 8:d55cac25e637 50 }
NegativeBlack 8:d55cac25e637 51
NegativeBlack 6:33b57f606f2b 52 return 0;
NegativeBlack 6:33b57f606f2b 53 }