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

📄 sunnyasyncsocket.h

📁 无线数据服务中心源代码:移动或联通的无限数据终端将采集到的数据通过Internet传送到数据中心
💻 H
字号:
// SunnyAsyncSocket.h: interface for the CSunnyAsyncSocket class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_SUNNYASYNCSOCKET_H__C580B2AC_0F25_43F2_9B4A_9B5E9413EBF5__INCLUDED_)
#define AFX_SUNNYASYNCSOCKET_H__C580B2AC_0F25_43F2_9B4A_9B5E9413EBF5__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "IpAddress.h"
#include "SunnyThread.h"

typedef struct
{
	SOCKET hSocket;
	CIpAddress ipAddr;
} ACCEPTED_SOCKET;

class CSunnyAsyncSocket  
{
public:
	CSunnyAsyncSocket(DWORD dwTimeout = INFINITE);
	virtual ~CSunnyAsyncSocket();

	BOOL Create(
			int nSocketType = SOCK_STREAM,
			long lEvent = FD_READ | FD_WRITE | FD_OOB | FD_ACCEPT | FD_CONNECT | FD_CLOSE,
			const CIpAddress& ipAddr = CIpAddress());
	BOOL Select(long lEvent = FD_READ | FD_WRITE | FD_OOB | FD_ACCEPT | FD_CONNECT | FD_CLOSE );
	void Close();
	int GetLastError() const;
	BOOL Shutdown(int how = SD_BOTH);
	BOOL Listen(int backlog = SOMAXCONN);
	BOOL Connect(const CIpAddress& ipAddr);
	BOOL Attach(SOCKET hSocket);
	BOOL m_fAutoDelete;
	BOOL Read(BYTE* p, DWORD dwLen);
	virtual BOOL Write(BYTE* p, DWORD dwLen);
	void SetThreadPriority(int nPriority = THREAD_PRIORITY_NORMAL);
	SOCKET GetHandle(){return m_hSocket;}

protected:
	virtual void OnClose(int nErrCode){ Close();};
	virtual void OnAccept(int nErrCoder){};
	virtual void OnRead(int nErrCoder){};
	virtual void OnWrite(int nErrCode){};
	virtual void OnAttach(){};
	virtual void OnReadComplete(int nErrCode, DWORD dwLen){};
	virtual void OnWriteComplete(int nErrCode, DWORD dwLen){};
	virtual void OnClear();
	virtual void OnTimeout(){};
	virtual void OnConnect(int nErrCode){};

	BOOL Bind(const CIpAddress& ipAddr);
	ACCEPTED_SOCKET Accept() const;

	CIpAddress m_ipAddr;
	SOCKET m_hSocket;

private:
	DWORD m_dwTimeout;
	CSunnyThread m_thread;
	WSAEVENT m_hEvent;
	WSAEVENT m_hStopEvent;
	OVERLAPPED m_ovRead;
	OVERLAPPED m_ovWrite;
	long m_lEvents;
	static DWORD WINAPI StaticThreadFunc(void* p);
	int SocketFunc();

	BOOL Init();
	void _OnReadComplete();
	void _OnWriteComplete();
};

#endif // !defined(AFX_SUNNYASYNCSOCKET_H__C580B2AC_0F25_43F2_9B4A_9B5E9413EBF5__INCLUDED_)

⌨️ 快捷键说明

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