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


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

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

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

  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 для закрытия сокета.

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

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

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

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

Серверное приложение Winsock

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

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