TMServer文件夹中文件:
TMServer.h:
#ifndef __TCP_MULTIPLEXING_SERVER_H__
#define __TCP_MULTIPLEXING_SERVER_H__
#include <dirent.h>
#include <sys/select.h>
#include <vector>
using std::vector;
#include "../TConnection/TConnection.h"
#include "../Head/Uncopy.h"
class TMServer : public TConnection, public Uncopy
{
public:
TMServer(const char * host, const char * serv);
virtual ~TMServer();
public:
void mainloop();
protected:
struct ConnNode
{
public:
ConnNode(int connfd, unsigned short ulen);
ConnNode(const ConnNode &);
~ConnNode();
ConnNode & operator = (const ConnNode &);
public:
void destroy();
public:
int sockfd;
bool rcvdat;
unsigned short lowlen;
char cwd[PATH_MAX + 1];
static char root[PATH_MAX + 1];
};
protected:
virtual bool handle(ConnNode & conn, unsigned char cmd,
char * data, unsigned short uslen) = 0;
protected:
bool accept();
void close(int & index);
bool checksock();
void adjustcwd();
protected:
int m_listenfd;
vector<ConnNode> m_acceptcn;
int m_maxfd;
fd_set m_masterset;
};
#endif
TMServer.cpp:
#include