tonyk_av 45 28 мая, 2022 Опубликовано 28 мая, 2022 · Жалоба Удивительное рядом. На W5500 работают 3 сокета, 2 как серверы, один как клиент. С серверными всё в порядке, вопросов нет. А вот с клиентским чё-то непонятное. Вызов send() на W5500 для буфера размером 11 байт возвращает, ессно, 11. А вот сервер, к которому подключен W5500 через коммутатор, получает аж 3 посылки, то есть изначальные 11 байт дробятся на 3 посылки. Есть идеи куда рыть? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rkit 4 28 мая, 2022 Опубликовано 28 мая, 2022 · Жалоба Копать в кишки этого загадочного send(), очевидно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 243 28 мая, 2022 Опубликовано 28 мая, 2022 · Жалоба 10 минут назад, tonyk_av сказал: сервер, к которому подключен W5500 через коммутатор, получает аж 3 посылки, то есть изначальные 11 байт дробятся на 3 посылки. Есть идеи куда рыть? Непонятно - о каких "сокетах" речь? Какой протокол? Если TCP, то непонятно в чём именно проблема? Что не устраивает? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tonyk_av 45 28 мая, 2022 Опубликовано 28 мая, 2022 · Жалоба 14 minutes ago, jcxz said: Непонятно - о каких "сокетах" речь? Какой протокол? Если TCP, то непонятно в чём именно проблема? Что не устраивает? TCP. Не устраивает то, что одну посылку в 11 байт 5500 разделил аж на 3. В чём может быть причина? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 243 28 мая, 2022 Опубликовано 28 мая, 2022 · Жалоба 2 минуты назад, tonyk_av сказал: TCP. Не устраивает то, что одну посылку в 11 байт 5500 разделил аж на 3. В чём может быть причина? В протоколе. Если надо чтобы не делились - меняйте на другой. UDP например. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tonyk_av 45 28 мая, 2022 Опубликовано 28 мая, 2022 · Жалоба 18 minutes ago, jcxz said: В протоколе. Если надо чтобы не делились - меняйте на другой. UDP например. А с какого перепуга он делит? Размер посылки меньше MTU, зачем делить? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 243 28 мая, 2022 Опубликовано 28 мая, 2022 · Жалоба Имеет право, потому и делит. MTU тут вообще не при чём. И вообще говорить, что кто то делит какие-то кадры - бессмысленно, потому как TCP - это поток байтов (октетов). Понятия "кадров" там нет. Нет кадров - нет деления. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k155la3 27 28 мая, 2022 Опубликовано 28 мая, 2022 · Жалоба 3 minutes ago, tonyk_av said: А с какого перепуга он делит? Размер посылки меньше MTU, зачем делить? Потомучто TCP работает как поток-последовательность байт. К последовательности претензии есть ? Возможно где-то у Вас затесались таймауты, они и отсекают пакеты. Или таймаут выдачи инф в PuTTY. Сниффером пакетов надо смотреть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tonyk_av 45 28 мая, 2022 Опубликовано 28 мая, 2022 · Жалоба 1 minute ago, jcxz said: Имеет право, потому и делит. MTU тут вообще не при чём. И с чего решили что делит "он"? Кто он? Сервер на ПК получает 3 посылки. И так только с 5500, поэтому и говорю, что он, 5500, делит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 243 28 мая, 2022 Опубликовано 28 мая, 2022 · Жалоба 2 минуты назад, tonyk_av сказал: Сервер на ПК получает 3 посылки. И так только с 5500, поэтому и говорю, что он, 5500, делит. Он не может чего-то делить или не делить. TCP - поток байтов. Передаёт байты, а не кадры. Советую почитать учебники по TCP/IP. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tonyk_av 45 28 мая, 2022 Опубликовано 28 мая, 2022 · Жалоба Just now, k155la3 said: Потомучто TCP работает как поток-последовательность байт. К последовательности претензии есть ? Возможно где-то у Вас затесались таймауты, они и отсекают пакеты. Или таймаут выдачи инф в PuTTY. Сниффером пакетов надо смотреть. Никакого PuTTY тут нет. Есть моя прога, которая принимает пакет и выдаёт его на экран. Таймаутов у меня нет. Но есть FreeRTOS. Неужели из-зп неё? Видимо, без снифера не обойтись. 3 minutes ago, jcxz said: Он не может чего-то делить или не делить. Тогда почему 11 байт, которые я отправляю одним send(), на ПК принимаются тремя посылками? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 243 28 мая, 2022 Опубликовано 28 мая, 2022 · Жалоба 6 минут назад, tonyk_av сказал: Тогда почему 11 байт, которые я отправляю одним send(), на ПК принимаются тремя посылками? Потому что так звёзды сложились. В другой раз может прийти 11 посылок по 1-у байту. 6 минут назад, tonyk_av сказал: Неужели из-зп неё? Из-за того, что вы не знаете что такое TCP. FreeRTOS тут никаким боком. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tonyk_av 45 28 мая, 2022 Опубликовано 28 мая, 2022 · Жалоба 3 minutes ago, jcxz said: Из-за того, что вы не знаете что такое TCP Я первый раз столкнулся с сетевым контроллером, который вместо отправки одного IP-пакета с 11 байтами разделил его на 3 пакета. Бред какой-то. Он ведь тупо засирает сеть этими пакетами. И как объяснить ему, чтобы он отправлял всю посылку зараз, ни где не вижу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k155la3 27 28 мая, 2022 Опубликовано 28 мая, 2022 · Жалоба 1 hour ago, tonyk_av said: (1) Никакого PuTTY тут нет. Есть моя прога, которая принимает пакет и выдаёт его на экран. (2) Таймаутов у меня нет. Но есть FreeRTOS. Неужели из-зп неё? (3) Видимо, без снифера не обойтись. . . . 1. А как-же "вещдок" в Вашем первом посте ? По Вашему описанию трудно представить конфигурация того, что Вы тестируете и в каких комбинациях. 2. Они есть. Просто Вы их не видите. См. в "стеке" TCP или в чипе W5500. Кроме того есть очереди и их верхний и нижний "уровни". 3. Да. Потом - можно и без него. ps посмотрел док на W5500. Есть два режима - VDM и FDM (Variable/Fixed Length Data Mode). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tonyk_av 45 29 мая, 2022 Опубликовано 29 мая, 2022 · Жалоба 14 hours ago, k155la3 said: Есть два режима - VDM и FDM (Variable/Fixed Length Data Mode). Даже три. Третий _WIZCHIP_IO_MODE_SPI_5500_, хотя он, вроде, идентичен FDM. Пробовал это менять, никак не влияет. Зато в примерах работы с Модбас показаны именно целые, не фрагментированные, пакеты. И разбивка одной посылки как 4+4+2 настораживает. Видимо, есть какая-то настройка у этого 5500, которая влияет на это. Только вот какая, где она описана? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться