Stanly Chen
/
K64-UDP-Socket
K64F, use static IP, UDP broadcast
main.cpp@1:8bbcb6a6ca18, 2019-04-02 (annotated)
- Committer:
- stanly88
- Date:
- Tue Apr 02 07:12:05 2019 +0000
- Revision:
- 1:8bbcb6a6ca18
- Parent:
- 0:cf516d904427
K64F use static IP, broadcast UDP
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
deepikabhavnani | 0:cf516d904427 | 1 | #include "mbed.h" |
deepikabhavnani | 0:cf516d904427 | 2 | #include "EthernetInterface.h" |
deepikabhavnani | 0:cf516d904427 | 3 | |
deepikabhavnani | 0:cf516d904427 | 4 | // Network interface |
deepikabhavnani | 0:cf516d904427 | 5 | EthernetInterface net; |
deepikabhavnani | 0:cf516d904427 | 6 | |
deepikabhavnani | 0:cf516d904427 | 7 | // Time protocol implementation : Address: time.nist.gov UDPPort: 37 |
deepikabhavnani | 0:cf516d904427 | 8 | |
deepikabhavnani | 0:cf516d904427 | 9 | typedef struct { |
deepikabhavnani | 0:cf516d904427 | 10 | uint32_t secs; // Transmit Time-stamp seconds. |
deepikabhavnani | 0:cf516d904427 | 11 | }ntp_packet; |
deepikabhavnani | 0:cf516d904427 | 12 | |
deepikabhavnani | 0:cf516d904427 | 13 | int main() { |
deepikabhavnani | 0:cf516d904427 | 14 | // Bring up the ethernet interface |
deepikabhavnani | 0:cf516d904427 | 15 | printf("UDP Socket example\n"); |
stanly88 | 1:8bbcb6a6ca18 | 16 | if( NSAPI_ERROR_OK != net.set_network("192.168.0.119",//Static IP |
stanly88 | 1:8bbcb6a6ca18 | 17 | "255.255.255.0", //NetMask |
stanly88 | 1:8bbcb6a6ca18 | 18 | "192.168.0.1") )// gateway ) |
stanly88 | 1:8bbcb6a6ca18 | 19 | { |
stanly88 | 1:8bbcb6a6ca18 | 20 | printf("Static IP setting Error\n"); |
stanly88 | 1:8bbcb6a6ca18 | 21 | } |
stanly88 | 1:8bbcb6a6ca18 | 22 | |
deepikabhavnani | 0:cf516d904427 | 23 | if(0 != net.connect()) { |
deepikabhavnani | 0:cf516d904427 | 24 | printf("Error connecting\n"); |
deepikabhavnani | 0:cf516d904427 | 25 | return -1; |
deepikabhavnani | 0:cf516d904427 | 26 | } |
deepikabhavnani | 0:cf516d904427 | 27 | |
deepikabhavnani | 0:cf516d904427 | 28 | // Show the network address |
deepikabhavnani | 0:cf516d904427 | 29 | const char *ip = net.get_ip_address(); |
deepikabhavnani | 0:cf516d904427 | 30 | printf("IP address is: %s\n", ip ? ip : "No IP"); |
deepikabhavnani | 0:cf516d904427 | 31 | |
deepikabhavnani | 0:cf516d904427 | 32 | UDPSocket sock(&net); |
deepikabhavnani | 0:cf516d904427 | 33 | SocketAddress sockAddr; |
deepikabhavnani | 0:cf516d904427 | 34 | |
stanly88 | 1:8bbcb6a6ca18 | 35 | /* |
deepikabhavnani | 0:cf516d904427 | 36 | char out_buffer[] = "time"; |
stanly88 | 1:8bbcb6a6ca18 | 37 | |
deepikabhavnani | 0:cf516d904427 | 38 | if(0 > sock.sendto("time.nist.gov", 37, out_buffer, sizeof(out_buffer))) { |
deepikabhavnani | 0:cf516d904427 | 39 | printf("Error sending data\n"); |
deepikabhavnani | 0:cf516d904427 | 40 | return -1; |
deepikabhavnani | 0:cf516d904427 | 41 | } |
deepikabhavnani | 0:cf516d904427 | 42 | |
deepikabhavnani | 0:cf516d904427 | 43 | ntp_packet in_data; |
deepikabhavnani | 0:cf516d904427 | 44 | int n = sock.recvfrom(&sockAddr, &in_data, sizeof(ntp_packet)); |
deepikabhavnani | 0:cf516d904427 | 45 | in_data.secs = ntohl( in_data.secs ) - 2208988800; // 1900-1970 |
deepikabhavnani | 0:cf516d904427 | 46 | printf("Time Received %lu seconds since 1/01/1900 00:00 GMT\n", |
deepikabhavnani | 0:cf516d904427 | 47 | (uint32_t)in_data.secs); |
deepikabhavnani | 0:cf516d904427 | 48 | printf("Time = %s", ctime(( const time_t* )&in_data.secs)); |
deepikabhavnani | 0:cf516d904427 | 49 | |
deepikabhavnani | 0:cf516d904427 | 50 | printf("Time Server Address: %s Port: %d\n\r", |
deepikabhavnani | 0:cf516d904427 | 51 | sockAddr.get_ip_address(), sockAddr.get_port()); |
deepikabhavnani | 0:cf516d904427 | 52 | |
deepikabhavnani | 0:cf516d904427 | 53 | // Close the socket and bring down the network interface |
deepikabhavnani | 0:cf516d904427 | 54 | sock.close(); |
deepikabhavnani | 0:cf516d904427 | 55 | net.disconnect(); |
stanly88 | 1:8bbcb6a6ca18 | 56 | */ |
stanly88 | 1:8bbcb6a6ca18 | 57 | |
stanly88 | 1:8bbcb6a6ca18 | 58 | char out_buffer[40]; |
stanly88 | 1:8bbcb6a6ca18 | 59 | int sendCnt = 0; |
stanly88 | 1:8bbcb6a6ca18 | 60 | while(1) |
stanly88 | 1:8bbcb6a6ca18 | 61 | { |
stanly88 | 1:8bbcb6a6ca18 | 62 | sprintf(out_buffer,"Tx:%d\r\n", ++sendCnt); |
stanly88 | 1:8bbcb6a6ca18 | 63 | if(0 > sock.sendto("192.168.0.255", 2000, out_buffer, strlen(out_buffer))) |
stanly88 | 1:8bbcb6a6ca18 | 64 | { |
stanly88 | 1:8bbcb6a6ca18 | 65 | printf("Error sending data\n"); |
stanly88 | 1:8bbcb6a6ca18 | 66 | break; |
stanly88 | 1:8bbcb6a6ca18 | 67 | } |
stanly88 | 1:8bbcb6a6ca18 | 68 | printf(out_buffer); |
stanly88 | 1:8bbcb6a6ca18 | 69 | wait(0.5); |
stanly88 | 1:8bbcb6a6ca18 | 70 | } |
stanly88 | 1:8bbcb6a6ca18 | 71 | sock.close(); |
stanly88 | 1:8bbcb6a6ca18 | 72 | net.disconnect(); |
deepikabhavnani | 0:cf516d904427 | 73 | return 0; |
deepikabhavnani | 0:cf516d904427 | 74 | } |