#pragma once #define WIN32_LEAN_AND_MEAN #include #include #include #include #include #include #include #include #include #pragma comment(lib, "ws2_32.lib") #pragma comment(lib, "Mswsock.lib") class SocketS { public: struct msgInfo { int index; int len = 0; char buf[1025] = { 0 }; }; private: struct clienInfo { SOCKET c_Sock; OVERLAPPED c_Olp; char c_strRecv[1024]; }; BOOL g_flag = TRUE; //状态 HANDLE hPort = NULL; //完成端口句柄 HANDLE* pThread = NULL; //线程句柄 int g_count = 0; //当前客户端ID std::mapClienMap; //所有客户端 std::mutex msgLock; //消息锁 std::listmsgList; //存放所有消息 static DWORD WINAPI ThreadProc(LPVOID lpParameter); //工作者线程 public: SocketS(); int PostAccept(void); int PostRecv(int index); int PostSend(int index, const char* buf, int len); BOOL Creat(int Prot); void Clear(); msgInfo* GetMsg(); };