UDP Seerver LCinet

Dependencies:   SDFileSystem WIZnetInterface mbed

Fork of UDPEchoServer by Mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "EthernetInterface.h"
00003 #include "SDFileSystem.h"
00004 
00005 
00006 //#define UDPServer 1
00007 #define UDPClinet 1
00008 
00009 #if defined(UDPServer)
00010     #define MAC     "\x00\x08\xDC\x11\x34\x78"
00011     #define IP      "192.168.99.100"
00012     #define MASK    "255.255.255.0"
00013     #define GATEWAY "192.168.99.1"
00014 #endif
00015 #if defined(UDPClinet)
00016     #define MAC     "\x00\x08\xDC\x11\x34\x90"
00017     #define IP      "192.168.99.101"
00018     #define MASK    "255.255.255.0"
00019     #define GATEWAY "192.168.99.1"
00020 #endif
00021 const char* ECHO_SERVER_ADDRESS = "192.168.99.100";
00022 const int ECHO_SERVER_PORT = 3000;
00023 const int ECHO_CLIENT_PORT = 2000;
00024 int main (void) {
00025 
00026     EthernetInterface eth;
00027     Serial (USBTX, USBRX);
00028     eth.init((uint8_t*)MAC,IP,MASK,GATEWAY);  //IP,mask,Gateway
00029     printf("Connecting\n");
00030     eth.connect();
00031 #if defined(UDPServer)
00032     while (true) 
00033     {
00034         printf("\nServer IP Address is %s\n", eth.getIPAddress()); 
00035         UDPSocket server;
00036         server.bind(ECHO_SERVER_PORT);
00037     
00038         Endpoint client;
00039         char buffer[256];
00040         while (true) {
00041             printf("\nWaiting for UDP packet...\n");
00042             int n = server.receiveFrom(client, buffer, sizeof(buffer));
00043             if (n <= 0) break;
00044             // print received message to terminal
00045             //buffer[n] = '\0';
00046             
00047             printf("Received packet from: %s\n", client.get_address());
00048             printf("Packet contents : '%s'\n",buffer);
00049             printf("Sending Packet back to Client\n");
00050             server.sendTo(client, buffer, n);
00051             if (n <= 0) break;
00052         }
00053     }
00054 #else   //Client
00055     printf("\nClient IP Address is %s \n", eth.getIPAddress());
00056     
00057     UDPSocket sock;
00058     sock.init();
00059     sock.bind(ECHO_CLIENT_PORT);
00060     Endpoint echo_server;
00061     echo_server.set_address(ECHO_SERVER_ADDRESS, ECHO_SERVER_PORT);
00062     
00063     char out_buffer[] = "Hello World";
00064     printf("Sending  message '%s' to server (%s)\n",out_buffer,ECHO_SERVER_ADDRESS);
00065     printf("ip= %s,port=%d\r\n",echo_server.get_address(),echo_server.get_port());
00066     sock.sendTo(echo_server, out_buffer, sizeof(out_buffer));
00067     
00068     char in_buffer[256];
00069    // int n = sock.receiveFrom(echo_server, in_buffer, sizeof(in_buffer));
00070     
00071    // in_buffer[n] = '\0';
00072     //printf("Received message from server: '%s'\n", in_buffer);
00073     
00074     sock.close();
00075     
00076     eth.disconnect();
00077     while(1) {}
00078 #endif
00079 }