www.pudn.com > NETINFO.rar > connect.h
#ifndef _CONNECT_H_
#define _CONNECT_H_
void IpNtoh(IP *ip);
void TcpNtoh(TCP *tcp);
void GetPseudoTcpHeader(PSEUDO_TCP_HEADER* pseudo, const IP* ip, WORD tcpLen);
void GetPseudoUdpHeader(PSEUDO_UDP_HEADER* pseudo, const IP* ip, WORD udpLen);
DWORD GetSum(const WORD *buffer, int size);
WORD GetCheckSumFromSum(DWORD cksum);
WORD GetTcpCheckSum(const TCP* tcp, const IP* ip, WORD tcpLen);
WORD GetUdpCheckSum(const UDP* udp, const IP* ip, WORD udpLen);
BOOL TcpIp2TcpAddr(const IP* ip, const TCP* tcp, TCP_ADDR tcpAddr[2], DWORD *pdwSrc);
void GetConnectionTempFileName(const TCP_ADDR* connecter, const TCP_ADDR* listener,
char fileName[MAX_PATH]);
#define CONNECT_BREAKDOWN_DURATION 6
//Á¬½ÓÀàÐÍ
enum CONNECT_TYPE { INVALID_CONNECT, TCP_CONNECT, LINE_CONNECT, FTP_CONNECT,
POP3_CONNECT, SMTP_CONNECT, HTTP_CONNECT};
struct TCP_WINDOW_BUFFER
{
BYTE buffer[MAX_TCP_WINDOW_SIZE];
BYTE bitmap[MAX_TCP_WINDOW_SIZE];
DWORD lastByte;
};
struct NetInfo;
typedef NetInfo* HNETINFO;
struct NETINFO_CALLBACKS;
class CConnection
{
public:
CConnection(const ETHERNET *ether, const IP*ip, NetInfo* pNi, const NETINFO_CALLBACKS *pFuncs, DWORD dwAttachData);
virtual ~CConnection();
BOOL OnTcpIpPacket(const IP *ip); //return FALSE indicate this connection should be closed
BOOL CanKeepContinue(const IP*ip, const TCP*tcp, int sender);
BOOL IsMyPacket(const IP *ip);
virtual BOOL OnData(int sender, int receiver, const BYTE* pData, DWORD length);
virtual enum CONNECT_TYPE GetConnectType(){return TCP_CONNECT;};
void BreakDownConnection();
public:
virtual BOOL IsTimeOut();
time_t m_lastTime;
public:
TCP_ADDR m_addr[2];
SOCKET_DATA m_data[2];
int m_listener, m_connecter;
NetInfo *m_pNi;
const NETINFO_CALLBACKS *m_pFuncs;
DWORD m_dwAttachData;
static DWORD m_dwConnectCount;
protected:
TCP_WINDOW_BUFFER m_window[2];
BYTE m_ether[2][ETHERNET_ADDR_LEN];
};
typedef CConnection* HTCPCONNECT;
DWORD GetConnectAttachData(HTCPCONNECT hConnect);
void SetConnectAttachData(HTCPCONNECT hConnect, DWORD dwAttachData);
enum CONNECT_TYPE GetConnectTypeEx(HTCPCONNECT hConnect);
void GetConnectAddress(HTCPCONNECT hConnect, TCP_ADDR* conneter, TCP_ADDR* listener);
void BreakDownConnect(HTCPCONNECT hConnect);
#endif