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