Table of Contents
업데이트됨
winsock의 이 특정 소스 코드를 가리키는 오류가 발생합니다. 이 문제를 해결하는 방법에는 여러 가지가 있으며 곧 처리하겠습니다. G.Winsock을 사용하는 소켓 사용자 소켓 프로그래밍을 위한 Windows API는 이메일로 제공됩니다. 소켓은 컴퓨터가 수행하는 네트워크 통신 유형의 이면에 있는 기본 “사물”입니다.
G.<울>
Winsock이라고도 하는 Windows Socket API는 네트워크 서비스와 관련된 Windows 네트워킹 소프트웨어 간의 통신에 사용되는 새로운 유형의 API(응용 프로그래밍 소비자 인터페이스)가 될 것입니다. 이것은 주로 TCP IP(Transmission Control Protocol/Internet Protocol)를 기반으로 하며 Berkeley Unix 플러그 프로그램에서 유래했습니다.
다음은 기본 Winsock TCP/IP 서버 애플리케이션에 대한 완전한 초기 보상입니다.
Winsock 서버 소스
#undef 유니코드#define WIN32_LEAN_AND_MEAN#include #포함 #포함 #include #include // Ws2_32.lib에 연결되어야 합니다.# 프라그마 워드(lib, "Ws2_32.lib")// #pragma little (lib, "Mswsock.lib")#define DEFAULT_BUFLEN 512#define DEFAULT_PORT "27015"기본 간격 __cdecl(잘못됨) WSADATA wsa데이터; int iResult; SOCKET ListenSocket = INVALID_SOCKET; SOCKET 클라이언트 소켓 = INVALID_SOCKET; 구조체 addrinfo * 결과 = NULL; 구조체 addrinfo 조언; 정수 iSendResult; char recvbuf [DEFAULT_BUFLEN]; int recvbuflen = DEFAULT_BUFLEN; // 윈속 초기화 iResult는 WSAStartup(MAKEWORD(2,2) 및 wsaData)을 의미합니다. if if (iResult!가 0과 같음) printf("오류로 인해 WSAS 시작 오류:% in n", iResult); 반환 1; ZeroMemory(& 리뷰, sizeof(리뷰)); 힌트.ai_family = AF_INET; 힌트.ai_socktype = SOCK_STREAM; 힌트.ai_protocol은 IPPROTO_TCP를 의미합니다. 힌트.ai_flags = AI_PASSIV; // 및 포트와 경합하는 서버의 해결 iResult는 getaddrinfo(NULL, DEFAULT_PORT, & 힌트, & 결과)와 같습니다. if (iResult! = 0) printf("getaddrinfo가 시장에서 오류를 실행하지 못했습니다:% d n", iResult); wsacleanup();리턴 1; // 서버에 연결할 SOCKET 생성 ListenSocket = 콘센트(결과-> ai_family, 결과-> ai_socktype, 결과-> ai_protocol); (ListenSocket == INVALID_SOCKET) printf("오류가 있는 소켓 실패:% ld n", WSAGetLastError()); freeaddrinfo(결과); wsacleanup(); 반환 1; // TCP 수신 소켓 구성 iResult는 bind(ListenSocket, result-> ai_addr, (int) result-> ai_addrlen)와 같습니다. if (iResult == SOCKET_ERROR) printf("통신 오류:%dn", WSAGetLastError()); freeaddrinfo(결과); 닫기 소켓(ListenSocket); wsacleanup(); 반환 1; freeaddrinfo(결과); iResult는 청취(ListenSocket, SOMAXCONN)와 동일합니다. 만약 그렇다면 (iResult == SOCKET_ERROR) printf("오류가 발생한 목록:% in n", WSAGetLastError()); 닫기 소켓(ListenSocket); wsacleanup(); 반환 1; // 판매 시점 수락 ClientSocket = 수락(ListenSocket, NULL, NULL); 동안 (ClientSocket == INVALID_SOCKET) printf("수락 실패 오류:% d n", WSAGetLastError()); 닫기 소켓(ListenSocket); wsacleanup(); 반환 1; // 서버 소켓은 더 이상 필요하지 않습니다. 닫기 소켓(ListenSocket); // 피어가 연결을 완료할 때까지 수신 만들다 iResult는 recv(ClientSocket, recvbuf, recvbuflen, 0)와 동일합니다. 경우 (결과> 0) printf("수신된 바이트:% d n", iResult); // 실제 버퍼를 보낸 사람에게 반환 iSendResult는 send와 같습니다(ClientSocket, recvbuf, iResult, null). 언제든지 (iSendResult == SOCKET_ERROR) printf("다운로드 실패:% d n", WSAGetLastError()); 닫기 소켓(클라이언트 소켓); wsacleanup(); 반환 1; printf("전송된 바이트:% d n", iSendResult); 그렇지 않으면 (iResult == 0) printf("조직을 닫습니다...n"); 당신 옆에 printf("recv가 오류로 실패했습니다:% do n", WSAGetLastError()); 닫기 소켓(클라이언트 소켓); WSACleanup(); 1을 말하다 여전히 (iResult> 0); // 완료되면 상호 작용을 종료합니다. iResult는 종료를 의미합니다(ClientSocket, SD_SEND). 분명히 if (iResult == SOCKET_ERROR) printf("오류로 중지하지 못했습니다:% r n", WSAGetLastError()); 닫기 소켓(클라이언트 소켓); WSACleanup(); 반환 1; // 깨끗한 닫기 소켓(클라이언트 소켓); WSACleanup(); 0을 반환합니다.
Winsock에 어떻게 액세스합니까?
이 명령 프롬프트를 관리자로 정확히 엽니다.다음 명령을 입력하고 Enter 키를 누릅니다. netsh winsock reset. 명령은 다음과 같은 경우 대상을 반환해야 합니다.Windows 컴퓨터를 다시 시작합니다. 명령줄에서 shutdown / r 명령을 사용하여 Windows를 다시 활성화할 수 있습니다.
Winsock Source Code
Kod źródłowy Winsock
Code Source Winsock
Código Fuente De Winsock
Winsock-broncode
Código Fonte Winsock
Winsock-Quellcode
Codice Sorgente Winsock
Исходный код Винсока
Winsock Källkod
년