Форум ОНУ

Гость


Автор Тема: Delphi i Builder  (Прочитано 39849 раз)

student

  • Гость
Delphi i Builder
« Ответ #11 : 04 Май 2006, 15:19:18 »
Цитата: "Gavrix"
тот механизм, который ты описал, уже реализован на к[cenzored]ьном (IP )уровне:) ты просто продублировал информацию, которая уже содержится в пакете))
почему ты не можешь рассылать пакеты конкретному адресату по его ip, аине рассылать броадкастом и в тексте сообщения писать кому же это сообщение адресовано? броадкаст нужен, когда ты хочешь чтобы одно и тоже сообщение пришло всем хостам в сети. тогда это сообщение отправляется один раз, а не не каждому хосу свое:)

Говорю же: я не писал этой проги (читай внимательнее выше) и не мне в голову пришла идея отправлять в пакете имена компьютеров. Ты можешь сам найти эту программу в нете и пообщаться с ее автором, правда на мои два письма он почему-то отвечать не захотел (зачем тогда было указывать мыло в программе :? ).
Я просто хочу написать программу, которая будет работать в этой сети вместо той (у желающих, а у остальных останется старый вариант). Естественно, что программа будет содержать ряд примочек. От броадкаста я уже отказался, но переделаю чуть позже (Просто для начала я сделал полностью совместимую версию программы, а теперь начинаю ее переделывать, насколько это возможно).

По поводу броадкаста возмущаются все, кому не лень, как я погляжу.
А что можете сказать по второму вопросу (элемент с текстом и смайликами)?

Gavrix

  • Гость
Delphi i Builder
« Ответ #10 : 04 Май 2006, 15:06:49 »
тот механизм, который ты описал, уже реализован на к[cenzored]ьном (IP )уровне:) ты просто продублировал информацию, которая уже содержится в пакете))
почему ты не можешь рассылать пакеты конкретному адресату по его ip, аине рассылать броадкастом и в тексте сообщения писать кому же это сообщение адресовано? броадкаст нужен, когда ты хочешь чтобы одно и тоже сообщение пришло всем хостам в сети. тогда это сообщение отправляется один раз, а не не каждому хосу свое:)

student

  • Гость
Delphi i Builder
« Ответ #9 : 04 Май 2006, 14:54:24 »
Цитата: "Eugene"
:)  :D  :)  :D
Оно хоть у когото работало ?


Говорю же: сообщения в этом случае приходят на все компы в сети !!!
По имени компьютера, которое находится внутри сообщения программа сама решает, нужно оно ей или нет !
А в случае компьютеров с двумя сетевыми, свои собственные сообщения, отправленные всем пользователям они получают дважды !
И это не моя идея об таковой организации рассылки сообщений !

Цитата: "Andrew Kosovich"
Кстати, действительно, попробуй отправить пакет на адрес 192.168.ХХХ.255


У меня была такая мысль, но пока ручки не доходят до этого (к тому же для этого надо идти ставить эту прогу на другой комп).
Я сейчас добавляю автоматическое обновление в программу, а потом займусь ее улучшением (не надо будет бегать и везде переустанавливать).

Gavrix

  • Гость
Delphi i Builder
« Ответ #8 : 03 Май 2006, 16:21:42 »
действительно, броадкаст лучше не использовать... по крайней мере настолько, на сколько это возможно. броадкаст пакеты сеть пригрузят... немного конечно, но все-таки, зачем мусор пускать в сеть?

Andrew Kosovich

  • Гость
Delphi i Builder
« Ответ #7 : 03 Май 2006, 13:16:36 »
Кстати, действительно, попробуй отправить пакет на адрес 192.168.ХХХ.255

Eugene

  • Гость
Delphi i Builder
« Ответ #6 : 03 Май 2006, 10:11:23 »
:)  :D  :)  :D
Оно хоть у когото работало ?
255.255.255.255 )
ты хоть на одну подсеть попробуй бродкаст запустить

student

  • Гость
Delphi i Builder
« Ответ #5 : 03 Май 2006, 09:24:12 »
Данная программа - чат (без сервера). В сети стоит програмка Chatter (автор: Дмитрий Андрейчук), которая посылает в сеть на адрес 255.255.255.255 сообщение не зависимо от получателя, а в теле сообщения пишет кому оно адресовано. Иными словами при желании можно читать все сообщения в сети (даже чужии). Я решил переписать эту прогу по-своему, чтобы личные сообщения отправлялись на конкретную машину, а не всем, и чтобы моя прога была полностью совместима с первой.
Тут две проблемы:
1. каждый компьютер имеет "своё состояние" (активный, неактивный, ...) и должен хранить у себя информацию о состоянии других компьютеров (и вообще он должен знать какие включены на данный момент). Я использовал посл. цифру IP для идентификации компьютеров, пока не заметил эту лажу.
2. Подобных компьютеров (с двумя работающими сетевыми картами) в сети может оказаться несколько!

Маска подсети и в первом и во втором случае 255.255.255.0, XXX не равны 0 !

С API я плохо знаком, может порекомендуете какую-нибудь литературу ?

И еще вопрос: какой компонент можно использовать в Delphi для вывода текста с рисунками (смайликами), и как это грамотно организовать ? В интернете я вроде нашел, что можно использовать RichEdit, но вот как ?(топик в форуме был не то удален, не то перемещен, но я так и ничего не нашел, и в др. форумах тоже)

Andrew Kosovich

  • Гость
Delphi i Builder
« Ответ #4 : 28 Апрель 2006, 22:22:54 »
Ну, как окончательный вариант - порыться в исходниках компонентов, или писать сетевую часть на API - там можно точно задвать локальный адрес\порт, правда стоит ли? Отвечать не берусь - все зависит от поставленных задач, времени и знаний.

Andrew Kosovich

  • Гость
Delphi i Builder
« Ответ #3 : 28 Апрель 2006, 22:08:26 »
2 student :

Если сетевая маска на обоих интерфейсах 255.255.0.0, то адреса 192.168.XXX.YYY и 192.168.0.1 - принадлежат одной подсети (класса В), либо в твоем случае ХХХ=0 - это раз. Во вторых, при использованиии сокетов Беркли (а именно они используются в Windows) принято не указывать локальную оконечную точку (иными словами сокет на локальной клиентской машине) и она распределяется автоматически исходя из настроенной на машине маршрутизации и наличия свободных портов. Видимо, скорее всего, в таблице маршрутизации первым описан адрес 192.168.0.1, а так как они (оба адреса) в одной подсети, то с него отправить пакет и есть самый короткий маршрут (что и является главной задачей маршрутизации вообще).

Т.е. проверь сетевую маску - это раз, ну и если можно указать локальный адрес явно в свойствах УДПклиента, то укажи его - это два. (в последнем сомневаюсь, т.к. эти компоненты сильно "завуалированы"  :D , а проверить сейчас не могу - нет машины с Windows и Delphi/Builder под рукой).

Удачи.

student

  • Гость
Delphi i Builder
« Ответ #2 : 27 Апрель 2006, 16:32:07 »
На компьютере 2 сетевые карты с IP 192.168.XXX.YYY и 192.168.0.1
При посылке сообщения в сеть 192.168.XXX.255 с помощью индиУДПклиента другие компьютеры видят второй его IP, а не первый, как этого хотелось бы. Можно ли как-то узнать второй IP или отправлять сообщение программой с определенной сетевой карты.

(На компьютере настроена "раздача инета" в свою внутреннюю сеть.
Сообщения отправляются для 255.255.255.255, может это с этим как-то связано ?)

Что можно сделать в этом случае ?

Предложения типа: отключить вторую сетевую не принимаются.
Теоретически подобных компьютеров в сети может быть несколько !

Del_programmer

  • Гость
Delphi i Builder
« Ответ #1 : 03 Октябрь 2005, 13:57:19 »
По вопросам программирования обращайтесь на мыло... :D

или сюда....