![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
UDP [D5, WinME, Win2k]
LOM © (2002-01-18 22:45:00)Проблема вот в чем.
Нужно опросить сервак игры!
Включаю снифер, посылаю запрос(броадкаст) снифер пишет что пакет отправлен с порта например 1235 на порт 22222(сервака) если в сети есть сервак игры то приходит ответ на порт 1235!
UDP исползую Indy
В настросках указываю порт 22222 и шлю! А как узнать на какой порт придет ответ от сервака, так как он всегда разный!
И из-за етого неполучается получить ответ сервака!
LOM (2002-01-24 13:20:00) [1]Как я узнаю IP если я посылаю бродкаст!
Во вторых снифер показывает что пакет пришел!
??????????
Malder (2002-01-23 20:54:00) [2]LOM. Во первых, в событии OnDataReceived пишется с какого IP пришел пакет.
Во вторых, если OnDataReceived не выполняется, то значит пакет не приходил. Или пришел не на тот порт, который указан в LocalPort.
Malder (2002-01-23 20:51:00) [3]LOM. Во первых, в событии OnDataReceived пишется с какого IP пришел пакет.
Во вторых, если OnDataReceived не выполняется, то значит пакет не приходил. Или пришел не на тот порт, который указан в LocalPort.
Hecker (2002-01-22 15:28:00) [4]У меня тоже самое! :(
LOM (2002-01-21 18:59:00) [5]to Malder: Ето все понятно я так и делал, но во первых, как я узнаю IP сервака, если я посылаю броалкаст! Смотря на снифер я вижу что, мой покет отослан и пришел пакет от сервака, а OnDataRecived не получает упраление!? тоесть он на етот пакет не риагирует?? в чем дело??
Gunner (2002-01-21 11:00:00) [6]>Malder
Ты не видел Delphi6 ?? Инди официально включён туда и представляет достаточно большой набор компонент для работы с сетью !
Андрей Сенченко (2002-01-20 17:34:00) [7]Шутка :)
Достаточно большой и интересный набор компонент. Реальная ссылка:
http://www.nevrona.com/INDY/
Андрей Сенченко (2002-01-20 17:30:00) [8]http://www.indy.com/
Malder (2002-01-20 15:28:00) [9]LOM, мля. Описываю в деталях.
Есть компонент NMUDP1. Ставь там RemotePort 22222, LocalPort 12345, RemoteHost - IP сервака.
Посылать данные можно так:
nmudp1.SendBuffer(pch, i);//где pch:array[0..255] of char
//(например)
Принимать данные надо в событии OnDataReceived:
nmudp1.readbuffer(pch, numberbytes);
Вот и все. Элементарно. Можешь использовать потоки и соответственно sendstream и readstream, но это по желанию.
И скажи, что такое INDY ?
LOM (2002-01-19 22:02:00) [10]Вроде разобрался, но чета NMUDP не хочет принимать ответный пакет от сервера(млм я не могу?)??
Anatoly Podgoretsky (2002-01-19 19:21:00) [11]Это уже относится не к протоколу UDP а к протоколу обмена DNS, то же самое ты и описываешь про его задачу
Но с UDP еще и доставка не гарантируется
Malder (2002-01-19 14:27:00) [12]Во первых, Anatoly Podgoretsky, UDP не предусматривает ответа ? А что это за соединение, где "говорит" только одна сторона ? NUKE что ли ? =) Я согласен, что по протоколу UDP ответ не обязателен. НО и по TCP отвечать необязательно. А ведь посылая DNS запрос по UDP мы получаем ответ. А ?
Во вторых, LOM, я не совсем понял. То ли ты чайник, то ли чайник я и не понимаю вопроса. Судя по тому, что ты написал, сервак посылает ответ на тот порт, с которого пришел запрос. Соответственно, определить куда придет ответ очень просто. На тот порт с которого ты посылаешь.=)
Правда, ты пишешь "UDP использую Indy". Я не знаю, что такое Indy. По ходу, компонент, где не надо ставить адрес порта с которого посылается запрос. Гм. Тогда запусти снифер и посмотри с какого порта отсылает твой UDP-компонент пакеты. На тот порт и придет ответ. А лучше используй нормальный компонент (хоть стардартный дельфийский)
...фуууу...отписался....
LOM (2002-01-19 13:57:00) [13]Я это понимаю, но сервак то шлет UDP пакет на порт моего компа и ето порт всегда разный! и как его узнать??
Anatoly Podgoretsky (2002-01-19 12:10:00) [14]UDP не предусматривает получения какого либо ответа, это однонаправленный механизм.