MiMicSDK Tcp client socket sample program.

Dependencies:   NyFileSystems libMiMic mbed-rtos mbed

Fork of WebSocketSample by Ryo Iizuka

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

Go to the documentation of this file.
00001 /**
00002  * @file
00003  * TCP client socket sample.<br/>
00004  * This program is to test of TCP client.
00005  * Connect to a TCP server, and send back the received data as is.
00006  * 
00007  */
00008 #include "mbed.h"
00009 #include "rtos.h"
00010 #include "SDFileSystem.h"
00011 #include "mimic.h"
00012 #include "utils/PlatformInfo.h"
00013 #include "fsdata.h"
00014 
00015 
00016 NetConfig cfg; //create network configulation
00017 Net* net;
00018 
00019 DigitalOut led1(LED1);
00020 DigitalOut led2(LED2);
00021 DigitalOut led3(LED3);
00022 DigitalOut led4(LED4);
00023 
00024 
00025 int main()
00026 {
00027     MiMicNetIf netif;
00028     Net net(netif);//Net constructor must be created after started RTOS
00029     NetConfig cfg; //create network configulation
00030     // manual setting
00031     cfg.setIpAddr(192,168,128,39);
00032     cfg.setNetMask(255,255,255,0);
00033     cfg.setGateway(192,168,128,254);    
00034     cfg.setSrvUPnP(false);
00035     cfg.setSrvMdns(false);
00036 
00037     // Create tcp socket with 512 bytes RX buffer.
00038     // Socket must create between "net.start" with "new Net()"
00039     TcpSocket* socket=new TcpSocket();
00040     
00041     //Start network
00042     net.start(cfg);
00043 
00044 
00045     led1=1;    
00046     for(;;){
00047         //connect to server
00048         if(!socket->connect(IpAddr(192,168,128,195),1234)){
00049             Thread::wait(1000);
00050         }
00051         //connected!
00052         led2=1;
00053         for(;;){
00054             led4=0;
00055             led3=1;
00056             //wait for data...
00057             const void* rx;
00058             //get read pointer
00059             int l=socket->precv(rx);
00060             if(l<0){
00061                 break;
00062             }
00063             if(l==0){
00064                 //timeout
00065             }else{
00066                 //ok,echo back data.
00067                 led4=1;
00068                 //send data
00069                 if(!socket->send(rx,l)){
00070                     break;
00071                 }
00072                 //move read pointer.
00073                 socket->pseek(l);
00074             }
00075             led3=0;
00076         }
00077         led2=0;
00078         led3=0;
00079         led4=0;
00080         socket->close(); //close the socket.
00081     }
00082     return 0;
00083 }
00084