Для осуществления всего нижеописанного я использую класс CAsyncSocket(MFC).
OS: Winnt 4.0 SP6
Среда разработки: Visual C++ 6.0 SP4
Есть программы запущенные на разных компьютерах, одно является сервером другое клиентом.
Программа клиент посылает данные программе сервер.
Создается клиентский сокет, далее он соединяется с сервером на другом компьютере
и когда вызывается функция OnConnect посылаются данные серверу,
после того как вызывается функция OnSend сокет закрывается и удаляется.
На сервере есть слушающий сокет, который получив запрос на соединение создает новый сокет
и передает ему управление посредством вызова функции Accept, далее этот новый сокет получает
данные закрывается и удаляется. Запросов на передачу данных в программе клиенте
много и есть подозрения что данные либо теряются, либо долго передаются, а это актуально т.к. система является realtime.
Возможно нужно использовать один сокет, а не плодить их при каждой передаче, но тогда необходимо оперативно
отслеживать разрыв соединения порядка 1-2 сек, а как это сделать и хватит ли пропускной способности если
предположить что за одну секунду должно передаться 300-400 запросов каждый в среднем по 50-70 байт ???
Попутно я обнаружил следующее:
Если соединение произошло нормально и затем я отключаю компьютер от локальной сети и вызываю
функцию Send, то функция OnSend вызывается с кодом ошибки 0 (нет ошибок),
но как такое может быть, данные ведь не передались !!! И как сделать так, чтобы OnSend вызывалась только
после того как данные действительно были переданы или когда истек таймаут на их передачу !!!