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:
Sat Nov 15 21:57:44 2014 +0000
Revision:
13:33f71f646baa
Parent:
12:f1bed576c7ac
Version bump of included libraries

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