Official TCP Full speed benchmark

Dependencies:   PicoTCP lpc1768-picotcp-eth mbed-rtos mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include <mbed.h>
00002 #include <stdarg.h>
00003 #include "EthernetInterface.h"
00004 
00005 #define ECHO_SERVER_PORT  7
00006 #define BUFFER_QUANTITY   (1024*1024)
00007 #define BUFFER_SIZE       (1024)
00008 
00009 EthernetInterface eth;
00010 
00011 int main() 
00012 {
00013     TCPSocketServer server;
00014    
00015     printf("Started PicoTCP Full Benchmark....\n");
00016     
00017     eth.init();
00018     printf("Waiting for DHCP server to give IP...\n");
00019     
00020     while(eth.connect() != 0);
00021     printf("IP address assigned : %s\n",eth.getIPAddress());
00022     
00023     server.bind(ECHO_SERVER_PORT);
00024     server.listen();
00025     printf("Local server listening on port : %d\n",ECHO_SERVER_PORT);
00026     
00027     
00028     while (true) {
00029         printf("\n>>> You can start PicoTCP_Official_TCP_Full_Benchmark.py\n");    
00030         
00031         TCPSocketConnection client;
00032         server.accept(client);
00033         client.set_blocking(true, 1500); // Timeout after (1.5)s
00034         char buffer[BUFFER_SIZE];
00035         int dataSent = 0, dataReceived = 0;
00036         while(dataSent < BUFFER_QUANTITY)
00037         {
00038             while((dataReceived+dataSent) < 2*BUFFER_QUANTITY)
00039             {
00040                 int n = client.receive(buffer, sizeof(buffer));
00041                 if (n <= 0) {
00042                     break;
00043                 }
00044                 dataReceived += n;
00045                 
00046                 n = client.send_all(buffer, n);
00047                 if (n <= 0) {
00048                     break;
00049                 }
00050                 dataSent += n;
00051             }
00052         }
00053     
00054         if((dataSent+dataReceived) == 2*BUFFER_QUANTITY)
00055         {
00056             printf("You can read the Rx+Tx Throughput now \n");
00057         }
00058         else
00059         {
00060             printf("Benchmark failed !\n");
00061         }
00062     }    
00063 }