71 / 48 / 5
Регистрация: 10.01.2017
Сообщений: 1,849
|
||||||
1 | ||||||
Как Winsock понимает, что пришел последний пакет сообщения04.10.2019, 15:04. Показов 1274. Ответов 8
Метки нет (Все метки)
Здравствуйте,
Так потихоньку почитываю про Winsock, и вот наткнулся вот на такой фрагмент:
Только потому удаленный сокет был закрыт, или где то в пакете передается сообщение о длине всего сообщения которое должно прийти ?
0
|
04.10.2019, 15:04 | |
Ответы с готовыми решениями:
8
Данные на сервер передаются, но PHP не понимает что пришел именно файл.. Как отсылать и получать сообщения с помощью WinSock? Как отследить, что юзер пришел именно с конкретной страницы с формой? Как компьютер понимает, что он подключен к интернету? |
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
04.10.2019, 15:35 | 2 |
Блокирующий recv вернёт ноль, только когда другая сторона разорвёт соединение. Там вроде так и написано.
Если соединение не закрывать, то никах последних пакетов нет - tcp это непрерывный поток данных.
1
|
71 / 48 / 5
Регистрация: 10.01.2017
Сообщений: 1,849
|
|
04.10.2019, 15:54 [ТС] | 3 |
А как же незнаю харанее размера входящего сообщения выделить размер buff ?
0
|
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
04.10.2019, 15:56 | 4 |
Зависит от протокола.
В случае xml/html - просто начитываешь документ кусками, до завершающей скобки >
1
|
71 / 48 / 5
Регистрация: 10.01.2017
Сообщений: 1,849
|
|
04.10.2019, 21:40 [ТС] | 5 |
Понял.Спасибо!
Добавлено через 5 часов 23 минуты А если передается просто какой то бинарный файл ?
0
|
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
04.10.2019, 22:13 | 6 |
Просто, само по себе, ничего не передаётся.
Кто-то тебе их передаст в определённом формате и, для бинарных данных, где-то будет предаваться их размер. Это от сокетов уже никак не зависит.
1
|
Любитель чаепитий
|
|
05.10.2019, 09:39 | 7 |
в случае с TCP приходит TCP пакет с флагом FIN, что означает, что удалённый хост хочет закрыть соединение.
длина всего сообщения не передаётся через IP или TCP. эту информацию можно передать только в протоколе прикладного уровня. как выше сказали, например, в XML/HTML/HTTP/etc. в некоторых из них длина всего сообщения кодируется в заголовке протокола(HTTP), в некоторых это понятно из анализа пакетов(XML/HTML). и из всего вышесказанного становится понятно, что функция recv не понимает, что пришёл последний пакет, т.к. это не её задача.
1
|
71 / 48 / 5
Регистрация: 10.01.2017
Сообщений: 1,849
|
|
07.10.2019, 12:46 [ТС] | 8 |
А можно ли как то подсчитать время между двумя пришедшими пакетами ?
0
|
71 / 48 / 5
Регистрация: 10.01.2017
Сообщений: 1,849
|
|
08.10.2019, 13:51 [ТС] | 9 |
Имел ввиду конечно не ip пакеты, а tcp сегменты.
0
|
08.10.2019, 13:51 | |
08.10.2019, 13:51 | |
Помогаю со студенческими работами здесь
9
WinSock отправка сообщения из Edit Как паскаль понимает что входное число отрицательное? Как сервлет понимает, что именно он обрабатывает запрос? winsock - клиент\сервер (теряется часть сообщения) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |