?? 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 + -