Table of Contents
Aktualisiert
Möglicherweise stoßen Sie auf einen Fehler, der schließlich auf den Quellcode von Winsock hinweist. Es gibt viele Möglichkeiten, dieses Problem zu lösen, und wir werden uns definitiv in Kürze damit befassen. g.Socket-Benutzer aufgrund von Winsock Die Windows-API für die Socket-Programmierung wird als Winsock bezeichnet. Sockets sind die grundlegenden “Dinge”, die jede Art von Netzwerkkommunikation, die Ihr Computersystem durchführt, kriminell machen.
g.
- 2 Minuten zum Lesen.
In diesem Ratgeberartikel
Was ist Winsock-Programmierung?
Winsock ist eine Programmierschnittstelle und alle Programme, die sie unterstützen, die E/A-Anforderungen von Internetanwendungen auf dem eigentlichen Windows-Betriebssystem verarbeiten. Es heißt Winsock, weil das folgende Windows-Modell der Berkeley UNIX Sockets-Schnittstelle ist.
Ist Winsock eine API?
Windows Socket API, auch bekannt als Winsock, ist eine neue Art von Anwendungsprogrammierbildschirm (API), der für die Kommunikation zwischen Windows-Netzwerktools in Bezug auf Netzwerkdienste verwendet wird. Es basiert hauptsächlich auf dem Transmission Control Protocol / Internet Protocol (TCP / IP) und stammt aus dem Berkeley Unix-Socket-Programm.
Das Folgende ist der vollständige Startwert für eine grundlegende Winsock TCP / IP-Serveranwendung.
Winsock-Serverquelle
#undef UNICODE#define WIN32_LEAN_AND_MEAN#include #include #include #include #include // Muss mit Ws2_32.lib verknüpft werden# Pragmaanalyse (lib, "Ws2_32.lib")// #pragma little (lib, "Mswsock.lib")#define DEFAULT_BUFLEN 512#define DEFAULT_PORT "27015"Basisintervall __cdecl (ungültig) WSADATA wsaData; int iErgebnis; SOCKET ListenSocket = INVALID_SOCKET; SOCKET ClientSocket = INVALID_SOCKET; struct addrinfo * result = NULL; struct addrinfo Beratung; int iSendResult; char recvbuf [DEFAULT_BUFLEN]; int recvbuflen = DEFAULT_BUFLEN; // winsock initialisieren iResult impliziert WSAStartup (MAKEWORD (2,2), & wsaData); wenn innerhalb von (iResult! = 0) printf ("Fehler beim Starten von WSAS aufgrund eines Fehlers: % d n", iResult); Rückgabe 1; ZeroMemory (& Bewertung, sizeof (Bewertung)); hints.ai_family = AF_INET; hints.ai_socktype = SOCK_STREAM; hints.ai_protocol = IPPROTO_TCP; hints.ai_flags gleich AI_PASSIV; // Auflösung von Site-Adresse und Port iResult gleich getaddrinfo (NULL, DEFAULT_PORT, & Hinweise, & Ergebnis); if (iErgebnis! = 0) printf ("getaddrinfo wurde abgebrochen, um Fehler auszuführen: % d n", iResult); wsacleanup ();Return 1; // Erstellen Sie einen SOCKET, um sich im Markt mit dem Server zu verbinden ListenSocket = Outlet (Ergebnis-> ai_family, Ergebnis-> ai_socktype, Ergebnis-> ai_protocol); if (ListenSocket == INVALID_SOCKET) printf ("Socket fehlgeschlagen zusätzlich zu error:% ld n", WSAGetLastError ()); freeaddrinfo (Ergebnis); wsacleanup (); Rückgabe 1; // TCP-Listening-Socket konfigurieren iResult = bind (ListenSocket, result-> ai_addr, (int) result-> ai_addrlen); if (iErgebnis == SOCKET_ERROR) printf ("Kommunikationsfehler: % d n", WSAGetLastError ()); freeaddrinfo (Ergebnis); closesocket (ListenSocket); wsacleanup (); Rückgabe 1; freeaddrinfo (Ergebnis); iResult entspricht hören (ListenSocket, SOMAXCONN); in Fällen wo (iResult == SOCKET_ERROR) printf ("Liste der daneben geworfenen Fehler: % d n", WSAGetLastError ()); closesocket (ListenSocket); wsacleanup (); zurückzahlen 1; // Verkaufsstelle akzeptieren ClientSocket = akzeptieren (ListenSocket, NULL, NULL); if (ClientSocket == INVALID_SOCKET) printf ("Annahme fehlgeschlagen bei Fehler: % d n", WSAGetLastError ()); closesocket (ListenSocket); wsacleanup (); Rückgabe 1; // Server-Socket wird nicht mehr benötigt closesocket (ListenSocket); // Empfangen, bis der Peer die Verbindung abschließt machen iResult entspricht recv (ClientSocket, recvbuf, recvbuflen, 0); wenn (Ergebnis> 0) printf ("Bytes empfangen:% d n", iResult); // Rückgabe eines Puffers an den Absender iSendResult = send (ClientSocket, recvbuf, iResult, null); jederzeit (iSendResult == SOCKET_ERROR) printf ("Download mit Fehler abgebrochen: % d n", WSAGetLastError ()); closesocket (ClientSocket); wsacleanup (); Rückgabe 1; printf ("Gesendete Bytes:% d n", iSendResult); wenn nicht, wenn (iResult == 0) printf ("Verbindung schließen ... n"); Neben dir printf ("Empfang fehlgeschlagen mit Fehler: % j n", WSAGetLastError ()); closesocket (ClientSocket); WSACleanup (); 1 wiederholen; trotzdem (iResult> 0); // Beenden Sie jede Verbindung, wenn wir fertig sind iResult gleich Herunterfahren (ClientSocket, SD_SEND); wenn vielleicht (iResult == SOCKET_ERROR) printf ("Beenden fehlgeschlagen mit Fehler: % Verteidigung n", WSAGetLastError ()); closesocket (ClientSocket); WSACleanup (); Rückgabe 1; // Sauber closesocket (ClientSocket); WSACleanup (); Gibt 0 zurück;
Aktualisiert
Sind Sie es leid, dass Ihr Computer langsam läuft? Genervt von frustrierenden Fehlermeldungen? ASR Pro ist die Lösung für Sie! Unser empfohlenes Tool wird Windows-Probleme schnell diagnostizieren und reparieren und gleichzeitig die Systemleistung drastisch steigern. Warten Sie also nicht länger, laden Sie ASR Pro noch heute herunter!
-
Führen Sie diesen Winsock-Client- und -Server-Beispielcode aus
Wie greife ich auf Winsock zu?
Öffnen Sie diese Eingabeaufforderung als Administrator.Geben Sie den folgenden Befehl ein und drücken Sie die Eingabetaste: netsh winsock reset. Der Befehl sollte Ziele wie folgt zurückgeben:Starten Sie Ihren Windows-Computer neu. Sie können Windows mit dem Befehl shutdown / r sell for in der Befehlszeile neu starten.
Winsock Source Code
Kod źródłowy Winsock
Code Source Winsock
Código Fuente De Winsock
Winsock-broncode
Código Fonte Winsock
Codice Sorgente Winsock
Исходный код Винсока
Winsock 소스 코드
Winsock Källkod