UDP server example project for the NetworkAPI library
Dependencies: EthernetInterface NetworkAPI mbed-rtos mbed
Fork of TCP_Client_Example by
main.cpp@13:33f71f646baa, 2014-11-15 (annotated)
- 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?
User | Revision | Line number | New 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 | } |