⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wisenet.h

📁 network library that can be use all network application!
💻 H
字号:
#ifndef  WISENET_DEF
#define  WISENET_DEF

#include	<windows.h>
#include	<winsock.h>
#include	"EroomIpList.h"

#define		WN_DEFAULT_WAIT_TIME	5000		// 5檬

#define		WN_MAX_SENDLEN			1300
#define		WN_MAX_RECVLEN			WN_MAX_SENDLEN

#define		WN_NOWAIT				0
#define		WN_WAITFOREVER			-1

#define		WN_WAIT_5				5000
#define		WN_WAIT_10				10000
#define		WN_WAIT_20				20000
#define		WN_WAIT_30				30000
#define		WN_WAIT_DEFAULT			60000

#define		WN_SOCKET_ERR			-101
#define		WN_SEND_ERR				-102
#define		WN_RECV_ERR				-103
#define		WN_BIND_ERR				-104
#define		WN_SOCKETNOTOPEN_ERR	-105
#define		WN_THREADSTART_ERROR	-106

#define		WN_QUEUE_NOUSE			0	
#define		WN_QUEUE_USE			1

#define		WN_SQNUM				1024
#define		WN_RQNUM				1024

#define		WN_MODE_SAMEPORT		0
#define		WN_MODE_NOSAMEPORT		1

#define		WN_KILLWAITTIME			5000

struct __WN_PACKET {
	int				m_RPort;			// 惑措 器飘(傈价且锭/荐脚且锭)
	char			m_Ip[64];			// 惑措 IP(傈价且锭/荐脚且锭)
	int				m_Len;
	unsigned char   *mp_Data;			// 单捞鸥 沥焊 ==> new肺 秦辑 且寸窍霸凳 
};
typedef struct __WN_PACKET WN_PACKET;


class CWiseNet : public CEroomIpList
{
private :
	int		m_RSocket;
	int		m_SSocket;
	int		m_RPort;
	int		m_SPort;
	int		m_QueueFlag;
	int		m_IpFlag;		// m_IpFlag == 1捞搁 荐脚 IP ADDRESS甫 府畔窍瘤 臼澜 ==> 加档刘柳瓤苞 
public:
	int		m_RecvFlag;
	int		m_WaitFlag;
	int		(*m_RecvFunc)(char *ap_Ip, int a_Port, char *ap_Buff, int w_Len);

	int		m_SleepTime;
	int		m_SQStart;
	int		m_SQEnd;
	int		m_RQStart;
	int		m_RQEnd;
	int		m_SRQFlag;		// RUNNING FLAG	
	HANDLE	m_HEvent;
	HANDLE	m_SQEvent;
	HANDLE	m_RQEvent;
	CRITICAL_SECTION	m_SockSection;


	WN_PACKET	m_SQData[WN_SQNUM];
	WN_PACKET	m_RQData[WN_RQNUM];

public:
	CWiseNet(int a_QueueFlag=WN_QUEUE_NOUSE, int a_IpFlag=0);
	~CWiseNet();
	virtual int GetSleepTime();
	virtual void SetSleepTime(int a_Time);
	virtual int  Open(int a_Port=-1, int a_Mode=WN_MODE_SAMEPORT);
	virtual int  Open(char *ap_Port=NULL, int a_Mode=WN_MODE_SAMEPORT);
	virtual void Close();
	virtual int  Send(char *ap_Ip, char *ap_Buff, int a_Len, int a_Flag=0);
	virtual int  Send(char *ap_Ip, int a_Port, char *ap_Buff, int a_Len, int a_Flag=0);
	virtual int  SendTo(char *ap_Ip, int a_Port, char *ap_Buff, int a_Len, int a_Flag=0);
	virtual int  Recv(char *ap_Ip, char *ap_Buff, int &a_Len, int a_WaitTime = WN_NOWAIT, int a_Flag=0);
	virtual int	 Recv(char *ap_Ip, int &a_Port, char *ap_Buff, int &a_Len, int a_WaitTime, int a_Flag=0);
	virtual int	 RecvFrom(char *ap_Ip, int &a_Port, char *ap_Buff, int &a_Len, int a_WaitTime, int a_Flag=0);
	virtual int  IsOpened();
	virtual int  SetRecvFunc(int (*ap_RecvFunc)(char *ap_Ip, int a_Port, char *ap_Buff, int w_Len), int a_WaitTime = WN_NOWAIT);
	virtual int  SetPort(int a_Port)	{ if(IsOpened()) return(-1); m_RPort = a_Port; m_SPort = a_Port; return(a_Port);};
	virtual int	 GetSSocket()	{ return(m_RSocket);		  };
	virtual int  GetSPort()		{ return(m_RPort);			  };
	virtual int	 GetRSocket()	{ return(m_SSocket);		  };
	virtual int  GetRPort()		{ return(m_SPort);			  };
	virtual void ResetSendQ()	{ m_SQStart = 0; m_SQEnd = 0; };
	virtual void ResetRecvQ()	{ m_RQStart = 0; m_RQEnd = 0; }; 
	virtual void ResetQ()		{ ResetSendQ(); ResetRecvQ(); };
	virtual	int	 GetQueueFlag()	{ return(m_QueueFlag);		  };
	virtual void SetIpFlag(int a_IpFlag)	{ m_IpFlag = a_IpFlag; };
	virtual int  GetIpFlag()    { return(m_IpFlag);           };
private:
	int  StartWisenetProcess();
	int  StopWisenetProcess();
};

extern "C" {
	DWORD WINAPI WiseNetRecvProc(LPVOID Param);
};

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -