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

📄 acl.h

📁 Windows网络与通信程序设计/王艳平, 张越编著
💻 H
字号:
///////////////////////////////////////////////
// Acl.h文件





#include "../common/PMacRes.h"

#include "../common/TypeStruct.h"



// 为每个套节字创建一个Session		check access list  CPCheckAccess
 
class CAcl
{
public:
	CAcl();
	~CAcl();

	// 套节字的创建与关闭,对应着Session的创建与关闭
	void CheckSocket(SOCKET s, int af, int type, int protocol);
	void CheckCloseSocket(SOCKET s);
	void CheckBind(SOCKET s, const struct sockaddr *addr);

	// 查看会话是否允许(会话的远程服务信息)
	int CheckAccept(SOCKET s, SOCKET sNew, sockaddr FAR *addr);
	int CheckConnect(SOCKET s, const struct sockaddr FAR *addr);

	int	CheckSendTo(SOCKET s, const SOCKADDR *pTo);
	int	CheckRecvFrom(SOCKET s, SOCKADDR *pFrom);

private:
	// 设置会话的属性
	void SetSession(SESSION *pSession, 
		USHORT usRemotePort, ULONG ulRemoteIP, UCHAR ucDirection);
	// 向应用程序通知一个会话
	void NotifySession(SESSION *pSession, int nCode);

	int GetAccessInfo(SESSION *pSession);
	int GetAccessFromWorkMode(SESSION *pSession);


	// 在规则文件中查找指定程序的过滤规则
	int FindRule(TCHAR *szAppName, int nStart);


	// 返回索引
	int CreateSession(SOCKET s, int nProtocol);

	void DeleteSession(SOCKET s);

	void InitializeSession(SESSION *pSession);

	int FindSession(SOCKET s);






	SESSION *m_pSession;
	int m_nSessionCount;
	int m_nSessionMaxCount;

	static BOOL QueryAccess();
	static BOOL IsLocalIP(DWORD dwIP);
};

⌨️ 快捷键说明

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