Пишу клиент-серверный проект для организации торговли.
Возникла проблема: юзаю select() для установки таймаута, с read()/recv() всё шикарно. Немного хуже с write()/send(). Мне надо точно знать, дошёл ли мой ответ до клиента. Я использую TCP, т.е. мне как-то надо заставить дождаться возвращения пакета ACK функцию write() и только потом продолжить выполнение программы.
Пример: открыли соединение, всё шикарно. обениваемся данными. В один прекрасный момент кто-то выдёргивает сетевой кабель, а клиент, допустим, отправляет серверу сообщение о том, что платёж проведён. Что будет: write() скопирует данные из моего буфера в системный и потом пойдёт дальше. Но данные то не дойдут (если, к примеру, кабель врубят через день), а приложение об этом не узнает. Так вот, надо бы, чтоб программа продолжила выполнение только после приёма ACK-пакета.
Понимаю, что можно потом самому послать TCP-пакет с подтверждением, но что-то это некрасиво. Не зря же TCP существует) Transmission Control Protocol, как никак)
Подскажите, плз, если ли выход? Книжка Стивенса чёт надежды не даёт(