Показать сообщение отдельно
Старый 17.04.2010, 18:10
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 6  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Да нет, дело не в этом, флеш же не сам обеспечивает реализацию TCP, flush() просто значит очистить данные которые были сейчас записаны в сокет и послать их, а уже как они пошлются - это решает програма, которая непосредственно TCP реализует. Захочет - подождет пока максимальный размер пакета наберется, не захочет - опправит так. Т.е. предположим, что размер пакета 100 байт, в первый раз флеш записал 70 байт + flush() програма обеспечивающая соединение увидела, что данных не достаточно, и стала в режим ожидания - если в течение секунды не прийдет еще 30+ байт, пошлет, как есть, а если прийдет, то добавит эти 30 байт, и если остаток не дотягивает до 100, снова встанет на таймер. Ну, это так, очень умозрительно, но фишка в том, что TCP обязан отправлять данные по одному пакету и всегда ждать подтверждения о получении, поэтому он не может просто по желанию взять и послать произвольное количество информации.
__________________
Hell is the possibility of sanity