Partager via


Réception et envoi de données sur le serveur

Le code suivant illustre les fonctions recv et send utilisées par le serveur.

Pour recevoir et envoyer des données sur un socket

#define DEFAULT_BUFLEN 512

char recvbuf[DEFAULT_BUFLEN];
int iResult, iSendResult;
int recvbuflen = DEFAULT_BUFLEN;

// Receive until the peer shuts down the connection
do {

    iResult = recv(ClientSocket, recvbuf, recvbuflen, 0);
    if (iResult > 0) {
        printf("Bytes received: %d\n", iResult);

        // Echo the buffer back to the sender
        iSendResult = send(ClientSocket, recvbuf, iResult, 0);
        if (iSendResult == SOCKET_ERROR) {
            printf("send failed: %d\n", WSAGetLastError());
            closesocket(ClientSocket);
            WSACleanup();
            return 1;
        }
        printf("Bytes sent: %d\n", iSendResult);
    } else if (iResult == 0)
        printf("Connection closing...\n");
    else {
        printf("recv failed: %d\n", WSAGetLastError());
        closesocket(ClientSocket);
        WSACleanup();
        return 1;
    }

} while (iResult > 0);

Les fonctions send et recv retournent une valeur entière du nombre d’octets envoyés ou reçus, respectivement, ou une erreur. Chaque fonction prend également les mêmes paramètres : le socket actif, une mémoire tampon char , le nombre d’octets à envoyer ou à recevoir et les indicateurs à utiliser.

Étape suivante : Déconnexion du serveur

Prise en main avec Winsock

Application serveur Winsock

Acceptation d’une connexion