An Echo server as described in RFC862. Written as a learning exercise for using Donatien's network stack. Hopefully of some use to others to get started with socket programming.
Diff: TCPEchoHandler.h
- Revision:
- 0:c4e397ba6a9d
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TCPEchoHandler.h Sat Jun 12 19:05:52 2010 +0000 @@ -0,0 +1,52 @@ +#ifndef TCP_ECHO_HANDLER_H +#define TCP_ECHO_HANDLER_H + +#include "mbed.h" +#include "TCPSocket.h" + +// Constant: ECHO_TIMOUT +// The timeout period for inactivity in milliseconds +#define ECHO_TIMEOUT 5000 + +/* + Class: TCPEchoHandler + A class instantiated to handle the incoming TCP client connection + Extends NetService to hook into the TCP/IP stack's polling + and destruction service +*/ +class TCPEchoHandler : public NetService { +public: + // Constructor: TCPEchoHandler + // Setup and handle the incoming connection + TCPEchoHandler(TCPSocket*); + virtual ~TCPEchoHandler(); +private: + // Variable: clientSocket + // The incoming TCP socket from the client + TCPSocket* clientSocket; + // Variable: closed + // A marker to say whether this socket is already closed + int closed; + // Variable: timeoutWatchdog + // A timer to countdown from during inactivity and close + // dormant connections + Timeout timeoutWatchdog; + + // Function: onNetTcpSocketEvent + // The callback function called by the network stack whenever an + // event occurs on the TCP socket + // Parameter: e - The event that has occurred + void onTCPSocketEvent(TCPSocketEvent e); + // Function: close + // Closes the client socket and marks this class as done with + // for the TCP/IP stack to destroy + virtual void close(); + // Function: setTimeout + // Parameter: timeout - The length of time to wait for more activity in milliseconds + void setTimeout(unsigned int timeout); + // Function: onTimeout + // The handler called by the timeout watchdog to close the connection when timed out + void onTimeout(); +}; + +#endif