Table of Contents
Atualizado
Você pode encontrar um erro que atinge o código-fonte do winsock. Existem várias maneiras de resolver esse problema, e hoje vamos lidar com isso em breve. g.Usuários de soquete com Winsock A API do Windows para canais de soquete é chamada winsock. Os soquetes são as “coisas” rudimentares por trás de qualquer tipo de comunicação em rede que seu computador pessoal faz.
g.
- 2 minutos para ler.
O Winsock é uma API?
A API do Windows Socket, também conhecida como Winsock, é um novo tipo de interface de treinamento e retreinamento de aplicativos (API) usada para comunicação entre o software de mídia do Windows em relação aos serviços de rede. É principalmente dependente do Transmission Control Protocol / Internet Protocol (TCP / IP) e se origina do programa de soquete Berkeley Unix.
O seguinte é o valor inicial de execução para um aplicativo Winsock TCP ou servidor IP básico.
Origem do servidor Winsock
#undef UNICODE#define WIN32_LEAN_AND_MEAN#include #include #include #include #include // Deve estar vinculado a Ws2_32.lib# pragma comment (lib, "Ws2_32.lib")// #pragma little (lib, "Mswsock.lib")#define DEFAULT_BUFLEN 512#define DEFAULT_PORT "27015"intervalo base __cdecl (inválido) WSADATA wsaData; int resultado; SOCKET ListenSocket = INVALID_SOCKET; SOCKET ClientSocket = INVALID_SOCKET; struct addrinfo * resultado = NULL; aconselhamento de struct addrinfo; int iSendResult; char recvbuf [DEFAULT_BUFLEN]; int recvbuflen = DEFAULT_BUFLEN; // inicializa winsock iResult implica WSAStartup (MAKEWORD (2,2), & wsaData); se no caso (iResult! = 0) printf ("Erro ao iniciar o WSAS devido ao erro com sucesso:% d n", iResult); Retorno 1; ZeroMemory (& ler, sizeof (revisão)); dicas.ai_family = AF_INET; hints.ai_socktype = SOCK_STREAM; hints.ai_protocol = IPPROTO_TCP; hints.ai_flags é igual a AI_PASSIV; // Resolução fora do endereço e porta do servidor iResult implica getaddrinfo (NULL, DEFAULT_PORT, & dicas, & resultado); if (iResultado! = 0) printf ("getaddrinfo sem sucesso ao executar o erro:% d n", iResult); wsacleanup();Retorno 1; // Cria um SOCKET para colocar no servidor ListenSocket implica socket (result-> ai_family, result-> ai_socktype, result-> ai_protocol); if (ListenSocket == INVALID_SOCKET) printf("Socket nao foi possivel com erro:% ldn", WSAGetLastError()); freeaddrinfo (resultado); wsalimpeza(); Retorno 1; // Configura o socket de escuta TCP iResult = bind (ListenSocket, resultado-> ai_addr, (int) resultado-> ai_addr); if (iResult == SOCKET_ERROR) printf("Erro de comunicação:% dn", WSAGetLastError()); freeaddrinfo (resultado); closesocket (ListenSocket); wsalimpeza(); Retorno 1; freeaddrinfo (resultado); iResult = escutar (ListenSocket, SOMAXCONN); se ou quando (iResult == SOCKET_ERROR) printf("Lista de lançamentos que possuem erros:% dn", WSAGetLastError()); closesocket (ListenSocket); wsalimpeza(); enviar 1; // Aceita o ponto de venda ClientSocket = aceitar (ListenSocket, NULL, NULL); if (ClientSocket == INVALID_SOCKET) printf ("Aceitação negligenciada com erro:% d n", WSAGetLastError ()); closesocket (ListenSocket); wsalimpeza(); Retorno 1; // O soquete do servidor não é mais extensivo necessário closesocket (ListenSocket); // Recebe até que o peer complete todas as conexões faça iResult é equivalente como forma de recv (ClientSocket, recvbuf, recvbuflen, 0); se (resultado> 0) printf("Bytes recebidos:% dn", iResult); //Retornando um buffer para o remetente iSendResult = enviar (ClientSocket, recvbuf, iResult, null); a qualquer momento (iSendResult == SOCKET_ERROR) printf ("Download quebrado com erro:% d n", WSAGetLastError ()); closesocket (ClientSocket); wsalimpeza(); Retorno 1; printf("Bytes enviados:% dn", iSendResult); caso contrário, se (iResult == 0) printf("Fechar conexao...n"); A seguir, você pode printf ("recv falhou por erro:% d n", WSAGetLastError ()); closesocket (ClientSocket); Limpeza do WSAC (); repetir 1; alternativamente (iResult> 0); // Termina a conexão quando terminar iResult = desligamento (ClientSocket, SD_SEND); no (iResult == SOCKET_ERROR) printf ("Falha ao parar quando se trata de erro:% d n", WSAGetLastError ()); closesocket (ClientSocket); Limpeza do WSAC (); Retorno 1; // Limpar closesocket (ClientSocket); Limpeza do WSAC (); Retorna 0;
Atualizado
Você está cansado de ver seu computador lento? Irritado com mensagens de erro frustrantes? ASR Pro é a solução para você! Nossa ferramenta recomendada diagnosticará e reparará rapidamente os problemas do Windows, aumentando drasticamente o desempenho do sistema. Então não espere mais, baixe o ASR Pro hoje mesmo!
-
Execute o código de exemplo do cliente e do servidor Winsock
Como acesso o Winsock?
Abra este comando rapidamente como administrador.Digite o seguinte comando e pressione Enter: netsh winsock reset. O comando deve retornar pontos de férias como o seguinte:Reinicie seu computador Windows. Você pode reiniciar o Windows usando o comando shutdown / 3rd thererrrs r na linha de comando.
Winsock Source Code
Kod źródłowy Winsock
Code Source Winsock
Código Fuente De Winsock
Winsock-broncode
Winsock-Quellcode
Codice Sorgente Winsock
Исходный код Винсока
Winsock 소스 코드
Winsock Källkod