Table of Contents
Bijgewerkt
Mogelijk ziet u een fout die verwijst naar het bronbeleid van winsock. Er zijn verschillende manieren om dit probleem te verhelpen, en we zullen dit binnenkort behandelen. G.Socket-gebruikers met Winsock De Windows API voor het programmeren van sockets wordt winsock genoemd. Sockets zijn de basis “dingen” achter elk type met betrekking tot netwerkcommunicatie die uw computer doet.
G.
- enkele minuten om te lezen.
Is Winsock een API?
Windows Socket API, ook bekend als Winsock, is een geheel nieuw type Application Programming Interface (API) dat wordt gebruikt met betrekking tot communicatie tussen Windows-netwerksoftware met betrekking tot netwerkitems. Het is voornamelijk gebaseerd op het Transmission Control Protocol / Internet Protocol (TCP / IP) en is bovendien afkomstig van het Berkeley Unix-socketprogramma.
Het volgende is de volledige beginwaarde voor een soort standaard Winsock TCP / IP Server-toepassing.
Winsock-serverbron
#undef UNICODE#define WIN32_LEAN_AND_MEAN#include #include #include #include #include // Moet gekoppeld zijn aan Ws2_32.lib# pragma commentaar (lib, "Ws2_32.lib")// #pragma klein beetje (lib, "Mswsock.lib")#define DEFAULT_BUFLEN 512#define DEFAULT_PORT "27015"basistijdsbestek __cdecl (ongeldig) WSADATA wsaData; int iResultaat; SOCKET LuisterSocket = INVALID_SOCKET; SOCKET ClientSocket = INVALID_SOCKET; struct addrinfo - resultaat = NULL; struc addrinfo advies; int iSendResult; char recvbuf [DEFAULT_BUFLEN]; int recvbuflen = DEFAULT_BUFLEN; // initialiseer winsock iResult impliceert WSAStartup (MAKEWORD (2,2), & wsaData); if if (iResultaat! = 0) printf ("Fout bij starten op WSAS vanwege fout:% d n", iResult); Retour 1; ZeroMemory (& review, sizeof (review)); hints.ai_family = AF_INET; hints.ai_socktype betekent SOCK_STREAM; hints.ai_protocol = IPPROTO_TCP; hints.ai_flags = AI_PASSIV; // Resolutie van zowel serveradres als , poort iResult = getaddrinfo (NULL, DEFAULT_PORT, & hints, & resultaat); zou het moeten zijn (iResult! = 0) printf ("getaddrinfo kan fout niet doen:% d n", iResult); wsacleanup ();Retour 1; // Maak een SOCKET om verbinding te maken met de server ListenSocket = socket (resultaat-> ai_family, resultaat-> ai_socktype, resultaat-> ai_protocol); wanneer (ListenSocket == INVALID_SOCKET) printf ("Socket mislukt met fout:% ld n", WSAGetLastError ()); gratisaddrinfo (resultaat); wsacleanup (); Retour 1; // Configureer TCP-luistersocket iResult = scenario (ListenSocket, resultaat-> ai_addr, (int) resultaat-> ai_addrlen); if (iResult == SOCKET_ERROR) printf ("Communicatiefout:% do n", WSAGetLastError ()); gratisaddrinfo (resultaat); sluitcontactdoos (ListenSocket); wsacleanup (); Retour 1; gratisaddrinfo (resultaat); iResult = let op (ListenSocket, SOMAXCONN); if (iResult == SOCKET_ERROR) printf ("Lijst met fouten:% d n", WSAGetLastError ()); sluitcontactdoos (ListenSocket); wsacleanup (); retour 1; // Accepteer het tijdstip van verkoop ClientSocket = volledig begrijpen (ListenSocket, NULL, NULL); in het geval (ClientSocket == INVALID_SOCKET) printf ("Acceptatie mislukt met fout:% en n", WSAGetLastError ()); sluitcontactdoos (ListenSocket); wsacleanup (); Retour 1; // Server plug is niet langer nodig sluitcontactdoos (ListenSocket); // Ontvang totdat alle peers de verbinding hebben voltooid maken iResult zal waarschijnlijk gelijk zijn aan recv (ClientSocket, recvbuf, recvbuflen, 0); indien misschien (resultaat> 0) printf ("Ontvangen bytes:% r n", iResult); // Een buffer terughalen - de afzender iSendResult = stuur mij (ClientSocket, recvbuf, iResult, null); het moment (iSendResult == SOCKET_ERROR) printf ("Download mislukt met fout:% deborah n", WSAGetLastError ()); closesocket (ClientSocket); wsacleanup (); Retour 1; printf ("Verzonden Bytes:% d n", iSendResult); anders, als (iResult == 0) printf ("Nauwe relatie ... n"); Naast jou printf ("recv mislukt met fout:% d n", WSAGetLastError ()); closesocket (ClientSocket); WSACleanup (); repetitief 1; echter (iResult> 0); // Beëindig de verbinding als we het over klaar hebben iResult = afsluiten (ClientSocket, SD_SEND); if (iResult == SOCKET_ERROR) printf ("Stoppen mislukt met fout:% d n", WSAGetLastError ()); closesocket (ClientSocket); WSACleanup (); Retour 1; // Schoon closesocket (ClientSocket); WSACleanup (); Retourneert 0;
Bijgewerkt
Bent u het beu dat uw computer traag werkt? Geërgerd door frustrerende foutmeldingen? ASR Pro is de oplossing voor jou! Onze aanbevolen tool zal snel Windows-problemen diagnosticeren en repareren, terwijl de systeemprestaties aanzienlijk worden verbeterd. Dus wacht niet langer, download ASR Pro vandaag nog!
Hoe ontdek ik Winsock?
Open deze opdrachtprompt als beheerder.Typ de volgende paar opdrachten en druk op Enter: netsh winsock reset. De opdracht zou bestemmingen moeten retourneren, zoals de exacte volgende:Start uw Windows-computer opnieuw op. U kunt Windows opnieuw opstarten door de opdracht shutdown / r op de verkrijgingsregel te kopen.
Winsock Source Code
Kod źródłowy Winsock
Code Source Winsock
Código Fuente De Winsock
Código Fonte Winsock
Winsock-Quellcode
Codice Sorgente Winsock
Исходный код Винсока
Winsock 소스 코드
Winsock Källkod