Table of Contents
Szybka i łatwa naprawa komputera
Możesz zobaczyć nowy komunikat o błędzie informujący, że istnieje kilka połączeń Winsock. Istnieje kilka kroków, aby rozwiązać ten problem, więc większość z nas przyjrzy się im pokrótce.Zazwyczaj nowa aplikacja hosta jest przeznaczona do przekierowywania wielu klientów do lodówki. W przypadku serwerów o wysokiej wydajności do obsługi wielu połączeń abonenckich można zwykle używać wielu wątków. Winsock używa kilku różnych wesołych technik, do których musisz się przyzwyczaić, czekając na zalogowanie się wielu osób.
Po zaakceptowaniu opcji Utwórz gniazdo oddziel strumień w żądaniach klientów. Następnie przejdź do najnowszej, wszechstronnej akceptacji.
dword ProcessClient (LPVOID lpParameter) GNIAZDO AcceptSocket = (GNIAZDO) lpParametr; // Prześlij badania i ciesz się. int bytesSent; int bytesRecv porównuje do SOCKET_ERROR; char sendbuf [2000] = ""; char recvbuf [2000] równa się ""; char-timebuf [128]; sprintf (sendbuf, "Witaj, taka jest gra z nowym serwerem na % s:% d (polecenia: 0, para, wyjście) n", ipaddr, port); bytesSent = przekaż (AcceptSocket, sendbuf, strlen (sendbuf), 0); jeśli to możliwe (bytesSent == SOCKET_ERROR) printf („Błąd przesyłania:% ld n”, WSAGetLastError ()); idź do samych lotek; kiedy (1) _strtime (buf czasu); ZeroMemory (recvbuf, sizeof (recvbuf)); bytesRecv oznacza recv (AcceptSocket, recvbuf, 32, 0); printf ("% s prospekt powiedział:% s n", timebuf, recvbuf); jeśli być może (strcmp (recvbuf, "1") == 0) sprintf (sendbuf, "Jesteś zalogowany w JEDNYM n"); // printf ("Wysłano '% s' n", sendbuf); bytesSent implikuje send (AcceptSocket, sendbuf, strlen (sendbuf), 0); if (bytesSent == SOCKET_ERROR) printf („Błąd przesyłania:% ld n”, WSAGetLastError ()); Wizyta lotek; również, jeśli (strcmp (recvbuf, "2") == 0) sprintf (sendbuf, "Wpisałeś DWA n"); // printf ("Wysłano '% s' n", sendbuf); bytesSent jest równy sposób wysyłania (AcceptSocket, sendbuf, strlen (sendbuf), 0); w ciągu (bytesSent == SOCKET_ERROR) printf („Błąd przesyłania:% ld n”, WSAGetLastError ()); idź do lotek; faktycznie if (strcmp (recvbuf, "exit") == 0) printf ("Klient chory n", WSAGetLastError ()); idź często do lotek; inne sprintf (sendbuf, "nieznane polecenie n"); // printf ("Wysłano '% s' n", sendbuf); bytesSent spełnia lub przekracza send (AcceptSocket, sendbuf, strlen (sendbuf), 0); chociaż wiele (bytesSent == SOCKET_ERROR)printf ("Błąd przesyłania:% ld n", WSAGetLastError ()); Idź do tych płetw; Płetwa: printf ("Procedura klienta n"); closesocket (AcceptSocket); Zwraca 0;
Jaki jest wynik między Main i Accept w Winsock?
Powiedziałbym, że nie ma dużej różnicy w funkcji main(). Zaczynamy zawierać wątek serwera i pętlę w nieskończoność na _getch(), dopóki ktoś naprawdę nie wykona ESC, wtedy zwykle poprawiamy gniazdo serwera i wychodzimy. Teraz musimy spojrzeć na wątek serwera WWW. To samo, z wyjątkiem czynnika, w którym dokładnie nazywasz kod. W części eksperymentalnej () dzisiaj dokonujemy tej małej zmiany.
Winsock Multiple Connection
Winsock Mehrfachverbindung
Connexion Multiple Winsock
Winsock 다중 연결
Winsock Multipelanslutning
Conexion Multiple Winsock
Winsock Meerdere Verbinding
Winsock Mnozhestvennoe Soedinenie
Conexao Multipla De Winsock
Connessione Multipla Winsock
