📄 tcpsocket.h
字号:
#if !defined(AFX_TCPSOCKET_H__890AB2C4_429F_11D4_93A3_0000E86DCAD8__INCLUDED_)
#define AFX_TCPSOCKET_H__890AB2C4_429F_11D4_93A3_0000E86DCAD8__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// TCPSocket.h : header file
//
//定义消息
#define SOCKET_THREAD_READ WM_USER+1000
#define SOCKET_THREAD_WRITE WM_USER+1001
#define SOCKET_THREAD_CONNECT WM_USER+1002
#define SOCKET_THREAD_ACCEPT WM_USER+1003
#define SOCKET_THREAD_CLOSE WM_USER+1004
#define SOCKET_THREAD_RESOLVE WM_USER+1005
#define SOCKET_THREAD_TRANSFER WM_USER+1006
#define SOCKET_THREAD_SHUT WM_USER+1007
//定义状态
#define SOCKET_ORIGIN 0 //还没有创建
#define SOCKET_INIT 1 //已经创建
#define SOCKET_CONNECTING 2 //正在连接
#define SOCKET_CONNECTED 3 //已经连接,等待收发数据
#define SOCKET_SENDING 4 //正在发送数据
#define SOCKET_READING 5 //正在接受数据
#define SOCKET_QUITING 6 //正在关闭
#define SOCKET_ACCEPTING 7 //正在等待连接
#define SOCKET_ACCPETED 8 //连接好,开始处理
#define SOCKET_CLOSED 7 //已经关闭
#define SOCKET_GETNAME 8 //正在解析域名
#define SOCKET_ERROROCCUR 8 //出现错误,等待处理
//定义socket用途
#define SOCKET_CLIENT 0 //用于数据传输
#define SOCKET_SERVER_LISTEN 1 //用于听
#define SOCKET_SERVER_TRANSFER 2 //用于传输
//用于等待连接
//定义错误类型
#define SOCKET_ERROR_NOERROR 0 //没有错误
#define SOCKET_ERROR_BLOCK 1 //建议改为block模式
#define SOCKET_ERROR_RESET 2 //虚电路reset
#define SOCKET_ERROR_CLOSE 3 //被关闭
#define SOCKET_ERROR_CONNECT 4 //建立时出错
#define SOCKET_ERROR_PACKET 5 //错误的数据包
#define SOCKET_ERROR_SIZE 6 //包大小不正确
#define SOCKET_ERROR_TIMEOUT 7 //超时
#define SOCKET_ERROR_INIT 8 //初始化socket失败
#define SOCKET_ERROR_CREATE 9 //创建socket失败
#define SOCKET_ERROR_REFUSE 10 //被拒绝
#define SOCKET_ERROR_HOSTNAME 11 //主机名称
#define SOCKET_ERROR_CANCEL 12 //被用户取消
#define SOCKET_ERROR_ACCEPT 13 //接受失败
#define SOCKET_ERROR_SEND 14
#define SOCKET_ERROR_UNKNOWN 100
//完成CAsyncSocket功能的改进,和线程绑定
//发送消息给线程,然后由线程调用成员函数完成动作
//socket类型只允许SOCK_STREAM,异步
#include <afxmt.h>
#include <winsock2.h>
/////////////////////////////////////////////////////////////////////////////
// CTCPSocket command target
class CTCPSocket
{
// Attributes
public:
// Operations
public:
CTCPSocket();
virtual ~CTCPSocket();
// Overrides
public:
BOOL ChangeHandle();
LPBYTE GetData(int *nLen);
int Send(LPBYTE lpBuf, int nLen);
BOOL Receive();
CString GetHost();
BOOL CreateTransfer(CTCPSocket *pSocket, HWND hWnd, BOOL bAsync = TRUE);
SOCKET GetSocket();
void StopWait();
void CancelJob();
void Close();
void Stop();
void EnableWrite();
BOOL CreateServer(int nPort, HWND hWnd);
BOOL CreateClient(CString szHost, int nPort, BOOL bUseProxy, HWND hWnd, HWND hFinalWnd);
int GetLastError();
BOOL m_bState;
private:
int SendFirstPacket();
BOOL m_bUseProxy;
BOOL m_bCanWrite;
int m_nBegin; //内容开始位置
int m_nEnd; //结束位置
LPBYTE m_lpReceiveBuffer;
LPBYTE m_lpSendBuffer;
BOOL m_bCancelJob;
BOOL GetHostIP(CString szHost);
int m_nErrorCode;
SOCKET m_TCP_s;
BOOL m_bSocketType;
HANDLE m_hWaitEvent;
HWND m_hMainWnd;
HWND m_hFinalWnd;
IN_ADDR ipServer;
IN_ADDR ipClient;
CString m_szHost;
UINT m_nPort;
};
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_TCPSOCKET_H__890AB2C4_429F_11D4_93A3_0000E86DCAD8__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -