server/client
Dependencies: mbed NetServicesMin
tcp_client.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_error.h" #include "tcp_client.h" extern IpAddr inCommingIp; Host server; TCPSocket sendSock; ConnectStatus clientStatus; Timer checkTimer; Ticker clientCheck; IpAddr clientIp; int clientPort; void onSendEvent (TCPSocketEvent e) { printf("... client event arrival!\n"); switch(e) { case TCPSOCKET_CONNECTED: // Ú±®¹ { char str[]="connect!"; sendSock.send(str,strlen(str) ); // M clientStatus=connected; printf("TCPSOCKET_CONNECTED!!\n"); break; } case TCPSOCKET_WRITEABLE: // MÂ\iM®¹j { printf("TCPSOCKET_WRITEABLE!!\n"); clientStatus=connected; break; } case TCPSOCKET_READABLE: // óMf[^ è { printf("TCPSOCKET_READABLE!!\n"); clientStatus=connected; break; } case TCPSOCKET_CONTIMEOUT: { printf("TCPSOCKET_CONTIMEOUT!!\n"); socketClose(); break; } case TCPSOCKET_CONRST: { printf("TCPSOCKET_CONRST!!\n"); socketClose(); break; } case TCPSOCKET_CONABRT: { printf("TCPSOCKET_CONABRT!!\n"); socketClose(); break; } case TCPSOCKET_ERROR: { printf("TCPSOCKET_ERROR\n"); socketClose(); break; } case TCPSOCKET_DISCONNECTED: { printf("TCPSOCKET_DISCONNECTED...\n"); socketClose(); break; } } printf("...client event out\n"); } void clientInit(void){ sendSock.setOnEvent(&onSendEvent); clientStatus=close; } int clientConnect(IpAddr ip , int port) { if(clientStatus == connecting){ printf("socket already connecting..\n"); return 0; } else if(clientStatus == connected){ printf("socket already connected..\n"); return 0; } Host server(ip, port); TCPSocketErr err= sendSock.connect(server); if (err != TCPSOCKET_OK) { printf("connect Error. "); dispTcpError(err); clientStatus=close; return -1; } clientStatus=connecting; return 0; } int tcpSend(char *data,int length){ return sendSock.send(data, length); } void checkConnect(void){ if(clientStatus != close) return; clientConnect( clientIp,clientPort ); return; } void socketClose(void){ sendSock.close(); clientStatus=close; } void connectCheckStart(IpAddr ip , int port) { clientIp=ip; clientPort=port; clientCheck.attach(&checkConnect,3); }