📄 wisenet.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 + -