Table of Contents
Reparo rápido e fácil do PC
Você pode ver uma nova e excelente mensagem de erro informando que há muitas conexões Winsock. Existem vários para corrigir esse problema, portanto, analise-os em breve.Normalmente, um aplicativo host significativo é projetado para conectar vários clientes a uma geladeira. Para servidores de alto desempenho, vários threads costumam ser usados para lidar com conexões de várias pessoas. Winsock usa várias técnicas de conteúdo de site diferentes que você precisa adquirir acostumado enquanto espera com relação a várias pessoas para fazer o login.
Depois de aceitar o Create Socket, interrompa o fluxo nas solicitações do cliente. Em seguida, passe para uma nova aceitação geral.
... durante (1) AcceptSocket significa SOCKET_ERROR; mesmo como (AcceptSocket == SOCKET_ERROR) AcceptSocket = aceitar (m_socket, NULL, NULL); printf ("O cliente está correlacionado. n"); DWORD dwThreadId; CreateThread (NULL, 0, ProcessClient, (LPVOID) AcceptSocket,, & dwThreadId); ... WINAPI
dword ProcessClient (LPVOID lpParameter) SOCKET AcceptSocket = (SOCKET) lpParameter; // Envie registros e divirta-se. int bytesSent; int bytesRecv se compara a SOCKET_ERROR; char sendbuf [2000] = ""; char recvbuf [2000] implica ""; char-timebuf [128]; sprintf (sendbuf, "Olá, nosso é um jogo com algum tipo de servidor em% s:% d (comandos: an, pair, exit) n", ipaddr, port); bytesSent = transferência (AcceptSocket, sendbuf, strlen (sendbuf), 0); se possível (bytesSent == SOCKET_ERROR) printf ("Erro de envio:% ld n", WSAGetLastError ()); vá inquestionavelmente aos ailerons; quando (1) _strtime (timebuf); ZeroMemory (recvbuf, sizeof (recvbuf)); bytesRecv parece indicar recv (AcceptSocket, recvbuf, 32, 0); printf ("% s cliente disse:% s n", timebuf, recvbuf); deveria ser (strcmp (recvbuf, "1") == 0) sprintf (sendbuf, "Você está mergulhado em UM n"); // printf ("Enviado '% s' n", sendbuf); bytesSent equivale a enviar (AcceptSocket, sendbuf, strlen (sendbuf), 0); como esperado se (bytesSent == SOCKET_ERROR) printf ("Erro de envio:% ld n", WSAGetLastError ()); Visita do Aileron; normalmente, if (strcmp (recvbuf, "2") == 0) sprintf (sendbuf, "Você digitou DOIS n"); // printf ("Enviado '% s' n", sendbuf); bytesSent é igual a enviar positivamente (AcceptSocket, sendbuf, strlen (sendbuf), 0); se ou quando (bytesSent == SOCKET_ERROR) printf ("Erro de envio:% ld n", WSAGetLastError ()); mover para os ailerons; muito possivelmente if (strcmp (recvbuf, "exit") == 0) printf ("Cliente esgotado n", WSAGetLastError ()); vá para ailerons específicos; outro sprintf (sendbuf, "comando desconhecido n"); // printf ("Enviado '% s' n", sendbuf); bytesSent refere-se a enviar (AcceptSocket, sendbuf, strlen (sendbuf), 0); embora o (bytesSent == SOCKET_ERROR) printf ("Erro de envio:% ld n", WSAGetLastError ()); Vá até a própria barbatana; Fin: printf ("O cliente se aproxima n"); closesocket (AcceptSocket); Retorna 0;
Qual é a diferença entre Principal e aceitar no Winsock?
Não há muita diferença nessa função main (). Começamos a considerar o encadeamento do servidor e repetimos incessantemente em _getch () até que alguém gerencie um ESC, então normalmente fechamos o soquete do servidor e saímos. Agora precisamos dar uma olhada no thread do servidor web. É o mesmo, exceto para a região onde você nomeia o código com precisão. Na parte do experimento (), os especialistas fazem essa pequena alteração.
Winsock Multiple Connection
Winsock Mehrfachverbindung
Winsock Wielokrotne Polaczenie
Connexion Multiple Winsock
Winsock 다중 연결
Winsock Multipelanslutning
Conexion Multiple Winsock
Winsock Meerdere Verbinding
Winsock Mnozhestvennoe Soedinenie
Connessione Multipla Winsock
