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

📄 socket.h

📁 一个HTTP协议的封装类
💻 H
字号:
#pragma once
#include <WinSock2.h>
#include "..\thread\Thread.h"
#include "Address.h"
using namespace fs::thread;
#include <string>
using std::string;
#include <map>
using std::map;
using std::pair;

namespace fs
{
	namespace socket
	{
		class Socket;
		typedef map <DWORD, Socket*> SocketMap;
		typedef pair <DWORD, Socket*> SocketPair;
		typedef map <DWORD, Socket*>::iterator SocketIterator;

		class Socket:public Thread
		{
		public:
			Socket(BOOL create=FALSE);
			Socket(Address& address);
			Socket(LPCSTR ip,UINT port);
			Socket(UINT port);

			virtual ~Socket(void);
		protected:
			SOCKET m_socket;//客户端收发都是用自己创建的SOCKET
							//服务端收发都是用accept创建的SOCKET
							//服务端accept用自己创建的SOCKET
			Address  m_address;//服务端用m_address保存自己的地址信息
							   //客户端用m_address保存要连接的服务端地址信息
			VOID CreateSocket();//当使用默认构造函数时,才使用一次

		protected:
			//接收pFrom传来的数据,放到长度为len的CHAR* pBuf中
			BOOL Receive(CHAR* pBuf,UINT& len);
			CHAR* ReceiveD(UINT& len);
			//处理收到的信息-数据去向
			virtual VOID OnReceive( CHAR* pBuf,UINT len );
			virtual VOID OnPassiveDisconnect()=0;//被动断开连接时的操作

		public:
			//发送数据到pTo
			BOOL Send( Socket* pTo,CONST CHAR* pBuf,UINT len );//服务端广播数据用
			BOOL Send(CONST CHAR* pBuf,UINT len);
			BOOL Send(string pBuf);
		
			void SetAddress(Address& address);
			BOOL SetAddress(const LPCSTR ip,UINT port,BOOL isDomainName=TRUE);
			void SetAddressPort(UINT port);

			CONST Address& GetAddress();

			VOID SetSocket(SOCKET sock);

			virtual VOID Run();
		};
	}
}

⌨️ 快捷键说明

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