Вообщем есть программка которая хорошо работает на локалхосте, также работает в сети провайдера. А когда клиент находится во вне(в другом городе, стране, континенте), то данные теряются. Какие есть варианты?
Проблема в том что данные отправляются, но ось ждет скорее всего момента когда данные накопятся, чтобы их отправить и видимо завершение соединения отправляется быстрее, хотя как знать, оно ведь тоже должно зависнуть в накоплении
Евгений Петряев, этой проблемы нет. Вторая сторона может только догадаться об обрыве соединения, но не о завершении. Кадры с данными могут передаваться по разным коммутационным линиям и достичь второй стороны в разном порядке. А могут и не достичь. В таком случае требуется повтор кадра от отправителя. Но если отправитель уже оборвал связь, то данные считаются испорченными и отбрасываются. Их прием и обработка уже не состоится.
Сергей тебе дело посоветовал. Почитай про передачу данных.
Евгений Петряев, На FreeBSD как часть тамошнего фаервола ipfw есть такая штука dummynet. Она позволяет настроить скорость "виртуального" канала, процент потерь и т.п. штуки для тестирования работы софта в сложных сетевых условиях.
Т.е. вы можете поднять 2 виртуалки. Одну с FreeBSD, другую с той ОС на которой у вас работает клиент (или сервер). Настройте dummynet с потерями трафика и гоняйте в этой виртуальной сети ваши программы до полного просветления. FreeBSD должна быть как шлюз для обоих сторон обмена трафиком.
Вообще если бы вы хотя бы указали какие протоколы используются для передачи, что за трафик гоняете, какие объемы, то можно было бы что-то посоветовать.