server/client
Dependencies: mbed NetServicesMin
tcp_server.cpp
- Committer:
- recotana
- Date:
- 2012-02-23
- Revision:
- 1:6e61ee662fd3
- Parent:
- 0:432b571e11a3
File content as of revision 1:6e61ee662fd3:
#include "types.h" #include "mbed.h" #include "config.h" #include "tcp_server.h" #include "tcp_client.h" #include "data_models.h" #include "xbee_lib.h" #include "net_routing.h" #include "leds.h" TCPSocket listenSock; TCPSocket* recieveSock; Host client; IpAddr inCommingIp; extern bool isHostConnected; int serverInit(void) { listenSock.setOnEvent(&onServerListnerEvent) ; DBGF("Bindding...\r\n") ; if ( listenSock.bind(Host(IpAddr(), kServerPort)) != ETH_OK ){ DBGF("Bindding Error.\r\n") ; return -1 ; } printf("Listen...\r\n"); if ( listenSock.listen() != ETH_OK ){ DBGF("Listen Error.\r\n") ; return -1 ; } return 0; } //Listner Event void onServerListnerEvent(TCPSocketEvent e) { DBGF("server ---IN TCPSocketEvent ---\r\n"); if ( e == TCPSOCKET_ACCEPT ){ DBGF("Listening: TCP Socket Accepted\r\n"); if ( listenSock.accept(&client, &recieveSock) != TCPSOCKET_OK ) { DBGF("onTcpSocketEvent Error \r\n"); return; } recieveSock->setOnEvent(&onServerRecievetEvent); //Get Client Side IP Address inCommingIp = client.getIp(); DBGV("Controler IP Address is [%d.%d.%d.%d].\r\n", inCommingIp[0], inCommingIp[1], inCommingIp[2], inCommingIp[3]); } DBGF("server --- OUT TCPSocketEvent ---\r\n\r\n") ; } void onServerRecievetEvent(TCPSocketEvent e) { DBGF("server --- IN ConnectEvent ---\r\n"); switch(e) { case TCPSOCKET_CONNECTED: DBGF("Connected to host.\r\n") ; break; case TCPSOCKET_WRITEABLE: DBGF("Can write data to buf.\r\n"); break; case TCPSOCKET_READABLE: DBGF("Data in buf.\r\n"); ledEther(); Payload pl; initPayload(&pl); while ( int len = recieveSock->recv((char*)&pl,256) ) { //raw data dump // dumpPayload(&payload); networkToPayload(&pl); netRouting(&pl); } ; break; case TCPSOCKET_CONTIMEOUT: DBGF("Connection timed out.\r\n"); break ; case TCPSOCKET_CONRST: DBGF("Connection was reset by remote host.\r\n"); break ; case TCPSOCKET_CONABRT: DBGF("Connection was aborted.\r\n") ; break ; case TCPSOCKET_ERROR: DBGF("Unknown error.\r\n") ; break ; case TCPSOCKET_DISCONNECTED: DBGF("Tcp Socket Disconnected\r\n") ; recieveSock->close() ; break; } DBGF("--- OUT ConnectEvent ---\r\n\r\n"); } void recieveDump(char *data , int length){ DBGV("size = %d\n -- -id\n",length); for(int i=0;i<16;i++) printf("%d:%0x ",i,data[i]); DBGF("\n--- data\n"); int count=0; for(int i=0;i<(length-16);i++){ DBGV("%02d:%02x ",i,data[16+i]); if( count==15 ) {count=0; printf("\n");} else count++; } DBGF("\n---frame end\n"); }