![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() ![]() |
![]() |
trminator |
![]() ![]()
Сообщение
#1
|
Четыре квадратика ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 579 Пол: Мужской Репутация: ![]() ![]() ![]() |
Привет! Скажите пожалуйста, есть ли в Дельфийском компоненте TNMUDP какие-либо ограничения на размер посылаемого буфера? По идее, сам протокол UDP никаких ограничений не имеет. Но если я пытаюсь послать буфер размером чуть больше 4-х килобайт, его просто не получают
![]() С пакетами примерно в килобайт все нормально. Не предлагайте только дробить длинные сообщения -- протокол, который я пытаюсь реализовать, придумывал не я +) -------------------- Закон добровольного труда Зимерги:
Люди всегда согласны сделать работу, когда необходимость в этом уже отпала |
trminator |
![]()
Сообщение
#2
|
Четыре квадратика ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 579 Пол: Мужской Репутация: ![]() ![]() ![]() |
Неужели никто не знает? Блин, пока проблему обошел, но скоро, чувствую, опять она меня иметь будет...
-------------------- Закон добровольного труда Зимерги:
Люди всегда согласны сделать работу, когда необходимость в этом уже отпала |
CJ |
![]()
Сообщение
#3
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 84 Пол: Мужской Репутация: ![]() ![]() ![]() |
Хм.. вот не знаю..а ты попробуй так, послать очень большой , а потом постепенно уменьшать пока не отправиться!
-------------------- * Origin: "It's MY LIFE!!! © Jhon Bon Jovi"
|
trminator |
![]()
Сообщение
#4
|
Четыре квадратика ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 579 Пол: Мужской Репутация: ![]() ![]() ![]() |
Ну на самом деле есть определенный протокол, который я хочу сымитировать. Точнее:
-- Есть программа, которая мне не нравится -- Есть программист, которому так надоели стоны, что, дескать, "программа у тебя кривая", что он выложил протокол и сказал: "Кому не нравится -- VisualStudio вам в руки =)" (ну я Дельфи взял=) -- Есть не в меру заносчивый trminator, который взялся писать прогу "под себя" (впрочем, кое-что она уже делает лучше =) можно еще ускорять) Некоторые сообщения могут достигать такого размера. Хорошо, что не все =) На их существование я пока забил, но все-таки.. нехорошо это ЗЫ Килобайт точно передается. Точнее не определял. -------------------- Закон добровольного труда Зимерги:
Люди всегда согласны сделать работу, когда необходимость в этом уже отпала |
CJ |
![]()
Сообщение
#5
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 84 Пол: Мужской Репутация: ![]() ![]() ![]() |
Дай заценить что она щас умеет?
-------------------- * Origin: "It's MY LIFE!!! © Jhon Bon Jovi"
|
trminator |
![]()
Сообщение
#6
|
Четыре квадратика ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 579 Пол: Мужской Репутация: ![]() ![]() ![]() |
Не дам =) нашел багу =) гнусную
-------------------- Закон добровольного труда Зимерги:
Люди всегда согласны сделать работу, когда необходимость в этом уже отпала |
P@sh@ |
![]()
Сообщение
#7
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 180 Пол: Мужской Репутация: ![]() ![]() ![]() |
я как раз занимаюсь сейчас клиент-серверным пакетом тоже на компонентах NMUDP, точнее он уже два месяца как активно используется, щас только глюки исправляю
![]() Сообщение отредактировано: P@sh@ - 1.04.2004 10:16 |
P@sh@ |
![]()
Сообщение
#8
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 180 Пол: Мужской Репутация: ![]() ![]() ![]() |
еще слышал, что дефолтные размеры UDP-пакетов меняются от системы к системе, и желательно ограничиться 4-мя килобайтами, меньше вряд ли будут.
а в NMUDP еще потоковый обмен глючно работает с большими блоками данных (~сотни килобайт), так что лучше не использовать SendStream... |
trminator |
![]()
Сообщение
#9
|
Четыре квадратика ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 579 Пол: Мужской Репутация: ![]() ![]() ![]() |
Ну сто кило никто и не пытается послать =)
#define MAX_MSG_SIZE 4096Вот такую бяку посылать надо (и принимать). На самом деле, от последнего массива можно посылать только "хвост" -- то, что там является текстом А еще меня бесит, что строки -- не строки, а массивы символов. Геморроя с этим... Короче все выкинул, начал писАть заново B) -------------------- Закон добровольного труда Зимерги:
Люди всегда согласны сделать работу, когда необходимость в этом уже отпала |
P@sh@ |
![]()
Сообщение
#10
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 180 Пол: Мужской Репутация: ![]() ![]() ![]() |
причем не любые массивы символов, а только СТАТИЧЕСКИЕ!!
на компоненте NMUDP очень легко сделать чат, но для серъезных приложений наверное лучше что-нибудь другое... ну кто не пытается 100 кб послать, а кто и мегабайты перекачивает... пришлось вот чуть ли не фтп-протокол писать упрощенный ![]() |
trminator |
![]()
Сообщение
#11
|
Четыре квадратика ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 579 Пол: Мужской Репутация: ![]() ![]() ![]() |
Это как раз чат =) с возможностью посылки "новостей" (по сути -- instant messaging'ом, только эту "новость" можно послать всем сразу). Им польхзуются около 700 человек (в нашей сетке). И проблема как раз с получением новостей (из-за нее я и начал писАть все по новой =) )
На бумажке все просто: посылвешь запрос на новость, получаешь ответ -- заголовки сообщений. Смотришь, есть ли у тебя такие заголовки (не устарела ли новость), если нет -- просишь передать ее целиком. На практике заголовки получаю всегда, а новости -- примерно 20% --- И, кстати, не факт, что по 2 кило не быстрее, чем сразу метр =) Для TCP, например, небольшие пакеты выгоднее посылать -------------------- Закон добровольного труда Зимерги:
Люди всегда согласны сделать работу, когда необходимость в этом уже отпала |
P@sh@ |
![]()
Сообщение
#12
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 180 Пол: Мужской Репутация: ![]() ![]() ![]() |
я разве говорил, что медленнее? я просто для прикола спросил
![]() на самом деле передается довольно быстро, если учесть, что объем удваивается за счет подтверждающих пакетов с контрольной суммой (их размеры конечно гораздо меньше, но какая разница, если передаются они одинаково), только потери бывают часто (сеть у нас довольно перегруженная) |
trminator |
![]()
Сообщение
#13
|
Четыре квадратика ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 579 Пол: Мужской Репутация: ![]() ![]() ![]() |
Ладно, попробую Инди присобачить...
Спасибо -------------------- Закон добровольного труда Зимерги:
Люди всегда согласны сделать работу, когда необходимость в этом уже отпала |
hiv |
![]()
Сообщение
#14
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 660 Пол: Мужской Реальное имя: Михаил Репутация: ![]() ![]() ![]() |
На самом деле размер пакета ограничиваестя железом а не программно, на сколько помню не более 1400 байт. Но пакеты можно делить на фреймы, а на приемной стороне их собирать учитывая их последовательность, т.к. маршрут прохождения фреймов может быть разный в сложных сетях. Это дробление чисто программная вешь, по идее должна реализовываться на уровне протокола (TCP UDP и т.д.)
-------------------- Никогда не жадничай. Свои проблемы с любовью дари людям!
|
trminator |
![]()
Сообщение
#15
|
Четыре квадратика ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 579 Пол: Мужской Репутация: ![]() ![]() ![]() |
Так по идее-то это должно быть прозрачно для пользователя (ну и программиста тоже). Ан нет, не совсем...
Вот будет время - доложу про испытания Indy. только там переписывать прилично -- в Инди это разделено на клиент и сервер. Зачем, интересно... -------------------- Закон добровольного труда Зимерги:
Люди всегда согласны сделать работу, когда необходимость в этом уже отпала |
P@sh@ |
![]()
Сообщение
#16
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 180 Пол: Мужской Репутация: ![]() ![]() ![]() |
trminator
я недавно решил все же глянуть в хелп по сокетам, и почти сразу возник вопрос - нахрена я мучался-разбирался со всякими Indy и NM-компонентами? то, что мне было нужно, легко реализовывалось с помощью стандартных виндовых сокетов! посмотри стандартные демки двух чатов - не намного сложнее, чем на NMUDP PS: что значит "зачем разделено на клиент и сервер" ? даже в UDP необходимо как-то принимать пакеты, а не только отправлять, а для приема надо ждать и проверять состояние порта (listen - "слушать"), чем и занимается серверная часть программы (в NMUDP это делается незаметно для пользователя, только вызывается событие OnDataReceived, когда пакет пришел) |
trminator |
![]()
Сообщение
#17
|
Четыре квадратика ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 579 Пол: Мужской Репутация: ![]() ![]() ![]() |
Погоди... сокеты разве не только TCP? (глупый вопрос, наверное...) Спасибо, посмотрю
Цитата зачем разделено на клиент и сервер Да не обращай внимания, стормозил просто :P Привыкнуть уже успел к TNMUDP После сессии вплотную заняться надо -------------------- Закон добровольного труда Зимерги:
Люди всегда согласны сделать работу, когда необходимость в этом уже отпала |
![]() ![]() |
![]() |
Текстовая версия | 9.07.2025 3:02 |