Я пытаюсь написать код, который будет ждать клиентских подключений. Как только он подключается к клиенту, он должен начать чтение файла и отправить его.
Мне нужно иметь уведомления для дескрипторов сокетов, то есть, если соединение теряется со стороны клиента, оно уведомит меня, чтобы я мог попытаться восстановить соединение.
Если соединение потеряно, оно до сторона клиента восстановить соединение. Серверы не подключаются или переподключаются к клиентам.
Если ваш сервер просто выдает файл, все, что вам нужно сделать, это принять соединения и передать их обработчику, который вызовет TransmitFile () в какой-то момент и убирать.
Я предполагаю, что части о ожидании клиентских подключений и отправке файла только для пояснения, и вы уже получили это работает. Если нет, то есть много уроков по Розетки а также файловый ввод / вывод там
В вашем случае определить, подключен клиент или нет, должно быть просто. Так как ваш сервер отправляет файл, как только соединение установлено, клиент начнет чтение из сокета, как только он будет открыт. read
Функциональные блоки, пока соединение открыто и данные не получены. Если соединение закрыто, оно вернется, прочитав 0 байтов. В этот момент вы знаете, что соединение было разорвано, и вы можете попытаться восстановить соединение.
Если вы не постоянно читаете из сокета, но оставляете его открытым для дальнейшего общения, вам следует заглянуть в select
-функции, который позволяет отслеживать один или несколько сокетов и уведомляет вас, как только на одном из них появится обновление (например, доступны новые данные или закрыто соединение)