Cómo utilizar la tecnología de comunicación de red de socket en TC2
A continuación se utiliza Socket para implementar la comunicación de socket de Windows C como ejemplo. Aquí pasamos una cadena al cliente y el servidor la recibe.
Lado del servidor
#include "stdafx.h"
#include
#include
#include #define SERVER_PORT 5208 //escucha el puerto void main() { WORD wVersionRequested; WSADATA wsaData; int ret, nLeft, length; SOCKET sListen, sServer //Escucha; Socket, conecte el socket struct sockaddr_in saServer, saClient; // Información de dirección char *ptr // Puntero para recorrer la información. //Inicialización de WinSock wVersionRequested=MAKEWORD(2, 2); //Versión de la DLL de WinSock deseada ret=WSAStartup(wVersionRequested, &wsaData ); if(ret!=0) { printf("WSAStartup() falló!\n"); return ; } //Crear un socket usando el protocolo TCP sListen= socket( AF_INET , SOCK_STREAM, IPPROTO_TCP); if (sListen == INVALID_SOCKET) { WSACleanup(); printf(" socket () faild! S_addr = htonl(INADDR_ANY); // Utilice INADDR_ANY para representar cualquier dirección //bind ret = bind(sListen, (struct sockaddr *)&saServer, sizeof (saServer)); if (ret == SOCKET_ERROR) { printf("bind() falló! Código: %d\n", WSAGetLastError()); closesocket(sListen); //cerrar el socket WSACleanup(); Retorno; } ret = escuchar( sListen, 5); if (ret == SOCKET_ERROR); ) { printf("listen() faild!code:%d\n", WSAGetLastError()); closesocket( sListen /); / cerrar socket return; } printf("¡Esperando que el cliente se conecte!\n"); printf(" Consejos: Ctrl+c para salir. \n"); // Bloqueo de espera para aceptar la conexión del cliente while(1)// Bucle para escuchar al cliente y nunca parar, por eso en este proyecto no No tengo paquetes de latidos. { length = sizeof(saClient); sServer = Accept(sListen, (struct sockaddr *)&saClient, &length); if (sServer == INVALID_SOCKET) { printf("accept() faild!code:%d\n", WSAGetLastErr or()); closesocket(sListen); //Cerrar el socket WSACleanup(); return; } char recibirMessage[5000]; nLeft = sizeof(receiveMessage); ptr = (char *)&.receiveMessage; while(nLeft>0) { //Recibir datos ret = recv(sServer, ptr, 5000, 0); if (ret == SOCKET_ERROR) { printf("recv() falló!\n"); return; p > } if (ret == 0) // El cliente ha cerrado la conexión { printf("El cliente ha cerrado la conexión \ n"); break; } nLeft -= ret; ptr += ret; } closesocket(sClient); //cerrar socket WSACleanup(); return; } p > char sendMessage[]="¡hola, este es un mensaje del cliente!"; ret = send (sClient, (char *)&sendMessage, sizeof(sendMessage), 0); /p> if (ret == SOCKET_ERROR) { printf("¡el envío() falló!\n"); } else printf("¡La información del cliente ha sido enviada!"); closesocket(sClient); //cierra el socket WSACleanup(); }