다음은 클라이언트를 수락하는 코드입니다 ... 이제 방금 list<Client>
인 풀에 추가 할 비트를 추가했습니다. Client
은 (SOCKET, Char*)
소켓 및 IP 주소로 정의되는 클래스입니다. addclient2pool()
함수는 목록에 추가하기 만합니다. 그런 다음 목록을 반복하고 Client
에 저장된 소켓을 통해 데이터를 보냅니다.C++ 사용자 지정 클라이언트 처리기
while(true) {
ClientSocket = accept(ListenSocket, (struct sockaddr *) &n, &len);
if (ClientSocket == INVALID_SOCKET) {
printf("accept failed with error: %d\n", WSAGetLastError());
closesocket(ListenSocket);
WSACleanup();
return;
}
addClient2Pool(Client(ListenSocket, inet_ntoa(n.sin_addr)));
}
소켓 그래서 난 ... 10057
메시지를 전송할 수없는 폐쇄 것으로 보인다. Client
클래스에 소켓을 저장하는 방식에 근본적으로 잘못된 점이 있지만 C++을 처음 접했습니다.
void messageHandler() {
int iSend;
char* charB = "hello!";
while(true) {
for(ClientPool::iterator it = mainClientPool.begin(); it != mainClientPool.end(); ++it) {
Client c = *it;
SOCKET sock = c.getSocket();
iSend = send(sock, charB, sizeof(charB),0);
if (iSend == SOCKET_ERROR) {
printf("send failed with error: %d\n", WSAGetLastError());
}
}
Sleep(2000);
}
}
나는
std::thread nameofthread(void)
내가 코드와 몇 가지 문제를 참조