Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2003.07.07;
Скачать: [xml.tar.bz2];

Вниз

Пакеты   Найти похожие ветки 

 
Snap   (2003-04-21 23:38) [0]

Мне нужно подключиться к серверу, адрес которого я не знвю. В связи с этим возникает мысль о широковещательных адресах. Но просто так по широковешательному адресу обыкновенным сокетом не подключишься, так ведь? Поэтому я хочу узнать, можно ли как то послать в сеть определённый пакет, то есть не использовать канал(сокет), а именно послать один пакет, в котором я могу сам установить флаги, и адрес получателя. Ещё неплохобы также получить ответ от сервера, который тоже будет одним пакетом. Может в моей ситуации поможет UDP?


 
Snap   (2003-04-22 20:03) [1]

Ап


 
Malder   (2003-04-22 22:02) [2]

Как-то ты очень образно описал проблему...

У тебя локальная сеть ? Или ты хочешь провернуть это в интренете ?


 
Snap   (2003-04-22 23:56) [3]

Сеть локальная. Где то в ней находится сервер, к которому мне надо подключится. Но точного его адреса я не знаю (не IP, не физического).


 
Malder   (2003-04-23 17:55) [4]

Ну так в чем проблема ?

Посылаешь широковещательный пакет на порт, который открыт у сервера по протоколу UDP. Этот пакет придет на все компьютеры в сети (ну зависит от маршрутизации, ну допустим на все) на указанный тобой порт. По идее, ответить должен только сервер. В теле сообщения можешь указать что-то типа "Address?". Сервер увидев такое сообщение может отослать обратный UDP пакет уже непосредственно отправителю (чтобы не загружать сеть еще одним броадкастом), где укажет свой IP адрес. Ну и все, далее по TCP/IP (или какой там у тебя протокол) по узнанному тобой адресу отправляй запрос на коннект.

Собственно говоря, такой вариант работы постепенно трансформируется в идею DNS серверов. То есть, тебе не нужно знать IP адрес компьютера в сети. Тебе просто нужно знать его имя, а DNS сервер тебе уже скажет его IP адрес, который может динамически меняться.


 
Snap   (2003-04-24 01:46) [5]

Да нет, общую идею я в принципе знал, просто был не в курсе что же такое UDP. А в чём принципиальные отличия ЮДП клиентских и серверных сокетов от простых?
И почему достака пакета всем машинам сети зависит от маршрутизации? Поясни.


 
Malder   (2003-04-24 18:45) [6]

Эх, я, конечно, понимаю дикое желание написать как можно быстрее как можно более "кульную" программу. Но без знаний вряд ли получится что-то хорошее. Ты бы прочитал про протоколы, сети, программирование сокетов. Да, это может занять много времени, но куда меньше, чем долбежка примитивными вопросами различных форумов. Информации в интернете - просто море. Такие вопросы как у тебя просто не должны возникать.

>просто был не в курсе что же такое UDP

это протокол такой. Как и TCP

А в чём принципиальные отличия ЮДП клиентских и серверных сокетов от простых?

Что ты называешь простыми сокетами ? TCP что ли ? :)

Главное отличие протокола UDP от TCP в том, что UDP не гарантирует доставку данных. То есть, ты послал и все. Подтверждения о доставке не жди. Ты, конечно, можешь реализовать подверждение в контексте UDP протокола, но будешь делать это своими силами. В отличие от TCP, где доставка данных и их подтверждение снимается с плеч программиста. То есть, посылать файлы с помощью UDP не надо. А вот сделать запрос к DNS или как в твоем случае "спросить" о наличии сервера в сети - самое оно.

Поэтому UDP используется для широковещательных сообщений (broadcast). Ты посылашь на броадкаст адрес сети UDP пакет и он приходит (в идеале) на все компьютеры этой сети. Ответить - удел каждого компьютера. Скорее всего ответит только сервер, для этого используй уникальный порт UDP не занятый стандартными службами, а в теле сообщения "поясняй" что тебе нужно, чтобы совсем исключить возможную путаницу.

И почему достака пакета всем машинам сети зависит от маршрутизации? Поясни

Ну а этот вопрос просто из разряда "программеры шутят". Если ты знаешь, что такое маршрутизация - то такого вопроса возникнуть не должно. Если не знаешь, что такое маршрутизация - почему тебя удивляет, что она может влиять на пакеты ? :))


 
Snap   (2003-04-25 20:31) [7]

Не боись, сведения о сетях у меня есть. Я не считаю сокеты протоколами. Сокет это логические объекты системы (в переводе гнездо).
Про различия ты похож не понял. Я имел ввиду не чем они различаются как протоколы, а чем различается использование их в дельфи.
ДНС не подходит в любом случае, специфика моей задачи.


 
Malder   (2003-04-26 12:17) [8]

Не боись, сведения о сетях у меня есть

Долго думал. Не понимаю, а чего мне бояться то ?

Я не считаю сокеты протоколами

Ну и я свою очередь так не считаю. Но "просто был не в курсе что же такое UDP" - вот я тебе и попытался объяснить.

Я имел ввиду не чем они различаются как протоколы, а чем различается использование их в дельфи.

Знаешь, я могу тебе задать аналогичный вопрос. "Мне не надо знать чем отличаются TLabel и TEdit как компоненты, мне надо знать различие в их использовании в Delphi". Интересно, как ты будешь отвечать на этот вопрос ?


 
Snap   (2003-04-26 13:00) [9]

Основное отличие заключается в том что у эдита есь свойство текст. Такого свойста нет у лэйбла, но у него есть свойство "заголовок", которо собственно и отвечает за то что будет написано на лэйбле.

Зы в лом отвечать- так не отвечай, но издеваться то зачем?


 
Malder   (2003-04-26 15:51) [10]

По моему, ты ахинею несешь. То есть, различие у TLabel и у TEdit в том, что у одного есть свойство Text, а у второго Caption ?!
Если ты так считаешь - то ты абсолютно неправильно подходишь к програмированию.
Если говорить об основных отличиях этих компонентов - я бы тогда уж сказал, что TEdit - это оконный компонент, который имеет свой handle и в котором пользователь может ввести данные. В отличии от TLabel, который не оконный и поэтому пользователь туда не может ввести ничего. Ну и который из вариантов правильный, по твоему, твой или мой ?


Ты спросил "чем различается использование их в дельфи". Тогда следуя твоей логике, я отвечу - "тем, что UDP сокеты работают по UDP протоколу". А использование их одинаково. И не только в Дельфе. А также в VC, VB и т.д.


 
Snap   (2003-04-26 16:07) [11]

Я имел ввиду отличия использования. При использовании этих компонентов очень немногие знаешь ли думают о хэндлах, сообщениях и прочих таких вещах. Это бывает важно иногда, но главное это то что в эдит пользователь вводит инфу, а в лейбл инфу пишет прога. И вообще про эдит и лейбл я сказал потому что ты "можешь задать аналогичный вопрос".

Так не мог бы ты объяснить, чем принципиально отличается использование компонентов сокетов и к примеру TNMUDP? Не различия в протоколах, заголовках пакетов, не проверку пакетов TCP, не алгоритмы деления больших пакетов, не про окна тисипи, и флаг инициализации, а как использовать UDP компонент? Буду очень благодарен.



 
Malder   (2003-04-26 21:24) [12]

При использовании этих компонентов очень немногие знаешь ли думают о хэндлах, сообщениях и прочих таких вещах

Ну и зря. Допустим, у TLabel нет метода SetFocus и быть не может. И не стоит искать. Надо как раз знать, что он не оконный - отсюда вытекают все его свойства. А как эти свойства назвали в данном компоненте - не суть важно.


Ну так ты сразу уточняй, что хочешь узнать об отличии КОМПОНЕНТОВ.

А тебе отличия TNMUDP от чего ? Этот компонент, по моему, простейший. Выставляешь свойства LocalPort, RemotePort, RemoteHost и все.

При приходе сообщения возникает событие OnDataReceived. Прочесть приходящее сообщение можно методом ReadBuffer. Отправить сообщение можно методом SendBuffer

Что неясно то ?


 
Illusion   (2003-04-27 14:27) [13]

UPD протокол не использует recv и send... это привелекия TCP... он использует sendto и recvfrom... Так как не надо создавать логические соединения.
З.Ы. с TNMUDP сталкивался в Билдере... МУТЬ ПОЛНАЯ!... Лучше уж с нуля... генерим сокет, затем осуществлям привязку сокета к окну при помощи WSAAsyncSelect... Далее делаем Application->OnMessage = OnMessage, где OnMessage - твоя йункция обработки соощений... Ловишь только сообщения сокета и разбираешся... Там нен так сложно - хелпа, чтобы разобратся хватит. Ой сорри... Application.OnMessage = OnMessage; :)... Совсем на с/с++ закодился... :)


 
Snap   (2003-04-30 22:27) [14]

Всем спасибо



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2003.07.07;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.007 c
14-20289
Andryk
2003-06-20 13:06
2003.07.07
Вот это да, классно отбрили :о))


1-20131
autootvetchik
2003-06-24 11:28
2003.07.07
HotKey в ActionList


1-20107
andrey__
2003-06-24 14:08
2003.07.07
Подскажите как сделать Приложение - службу.


14-20189
Microsoft
2003-06-18 18:52
2003.07.07
Создание пиринговой сети


4-20356
BJValentine
2003-05-07 16:53
2003.07.07
CreateProcess





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский