Поделиться через


Отключение сервера

После того как сервер завершит получение данных от клиента и отправку данных обратно клиенту, он отключается от клиента и завершает работу сокета.

Отключить и завершить работу сокета

  1. Когда сервер завершает отправку данных клиенту, можно вызвать функцию , указав SD_SEND для остановки отправки на стороне сокета. Это позволяет клиенту освободить некоторые ресурсы для этого сокета. Серверное приложение по-прежнему может получать данные в сокете.

    // shutdown the send half of the connection since no more data will be sent
    iResult = shutdown(ClientSocket, SD_SEND);
    if (iResult == SOCKET_ERROR) {
        printf("shutdown failed: %d\n", WSAGetLastError());
        closesocket(ClientSocket);
        WSACleanup();
        return 1;
    }
    
  2. После завершения получения данных клиентское приложение вызывает функцию closesocket , чтобы закрыть сокет.

    Когда клиентское приложение завершает выполнение с использованием библиотеки Windows Sockets DLL, для освобождения ресурсов вызывается функция WSACleanup.

    // cleanup
    closesocket(ClientSocket);
    WSACleanup();
    
    return 0;
    

Полный исходный код сервера

Начало работы с Winsock

Приложение сервера Winsock

получение и отправка данных на сервере

выполнение примера кода клиента и сервера Winsock