#include "pch.h" #include "SocketManager.h" SocketManager::SocketManager() { init(); } SocketManager::~SocketManager() { } void SocketManager::init() { clientaddr.sin_family = AF_INET; clientaddr.sin_port = htons(PORT); clientaddr.sin_addr.S_un.S_addr = inet_addr(ADDR); //½¨Á¢8¸öÁ¬½Ó sockClients.clear(); for (int i = 0;i < 8;i++) { addClient(i); } Connect(); } int SocketManager::getClientsNum() { return sockClients.size(); } void SocketManager::addClient(int p) { WSADATA wsd; WSAStartup(MAKEWORD(2, 2), &wsd); SOCKET m_SockClient; m_SockClient = socket(AF_INET, SOCK_STREAM, 0); sockClients.push_back(m_SockClient); } int SocketManager::Connect(int p) { int i = connect(getClient(p), (sockaddr*)&clientaddr, sizeof(clientaddr)); return i; } int SocketManager::Connect() { int scount=0; list::iterator ele; for (ele = sockClients.begin();ele != sockClients.end();++ele) { int i = connect(*ele, (sockaddr*)&clientaddr, sizeof(clientaddr)); if (i >= 0) { scount++; } } return scount; } int SocketManager::disConnect(int p) { return closesocket(getClient(p)); } void SocketManager::disConnect() { list::iterator ele; for (ele = sockClients.begin();ele != sockClients.end();++ele) { closesocket(*ele); } } SOCKET SocketManager::getClient(int p) { list::iterator ele = sockClients.begin(); if (p > sockClients.size() - 1) { return 0; } std::advance(ele, p); return *ele; } BOOL SocketManager::sendMsg(int p, char* msg) { SOCKET socket = getClient(p); char buffer[1024]; send(socket, msg, strlen(msg), 0); int num = recv(socket, buffer, 1024, 0); if (num >= 0) { std::cout << "Receive form server: " << buffer << std::endl; return 1; } return 0; }