Отключение сервера
После того как сервер завершит получение данных от клиента и отправку данных обратно клиенту, сервер отключается от клиента и завершает работу сокета.
Отключение и завершение работы сокета
Когда сервер завершает отправку данных клиенту, можно вызвать функцию завершения работы , указав 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; }
Когда клиентское приложение завершает получение данных, вызывается функция closesocket для закрытия сокета.
Когда клиентское приложение завершается с помощью библиотеки DLL Windows Sockets, вызывается функция WSACleanup для освобождения ресурсов.
// cleanup closesocket(ClientSocket); WSACleanup(); return 0;
Полный исходный код сервера
Связанные темы