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