#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<SOCKET>::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<SOCKET>::iterator ele;
|
for (ele = sockClients.begin();ele != sockClients.end();++ele) {
|
closesocket(*ele);
|
}
|
}
|
|
SOCKET SocketManager::getClient(int p) {
|
list<SOCKET>::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;
|
}
|