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