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

📄 tcpsocket.h

📁 网络聊天工具原代码 VC源码(网络编程
💻 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 + -