crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> QUdpSocket, как послать пакет чтобы его поймали все
flankerr
  опции профиля:
сообщение 26.6.2009, 17:07
Сообщение #1


Активный участник
***

Группа: Участник
Сообщений: 356
Регистрация: 9.1.2008
Пользователь №: 65

Спасибо сказали: 2 раз(а)




Репутация:   0  


как послать udp пакет чтобы его "поймали" все приложения запущеные на данном компе и слушающие порт на который был послан пакет ?

Сообщение отредактировал flankerr - 26.6.2009, 17:21
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 26.6.2009, 17:28
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 229 раз(а)




Репутация:   34  


А разве несколько программ могут открыть все один и тот же порт?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
flankerr
  опции профиля:
сообщение 26.6.2009, 17:34
Сообщение #3


Активный участник
***

Группа: Участник
Сообщений: 356
Регистрация: 9.1.2008
Пользователь №: 65

Спасибо сказали: 2 раз(а)




Репутация:   0  


Цитата(SABROG @ 26.6.2009, 18:28) *
А разве несколько программ могут открыть все один и тот же порт?

QUdpSocket::bind(int port,QUdpSocket::ReuseAddressHint|QUdpSocket::ShareAddress);
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 26.6.2009, 17:40
Сообщение #4


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 229 раз(а)




Репутация:   34  


Тогда, насколько я понял примеры Broadcast Receiver Example/Broadcast Sender Example разобраны и проблема здесь в том, что на локальной машине пакеты передающиеся на неё же минуют сетевую карту вообще. Эта таже проблема почему так мало снифферов, которые могут ловить локальный траффик, а те что существуют используют хак, а не promiscuous mode сетевой карты.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
flankerr
  опции профиля:
сообщение 26.6.2009, 17:45
Сообщение #5


Активный участник
***

Группа: Участник
Сообщений: 356
Регистрация: 9.1.2008
Пользователь №: 65

Спасибо сказали: 2 раз(а)




Репутация:   0  


на сколько я знаю это только в виндах локальные пакеты минуют сетевую карту - хотямогу ошибаться.
Broadcast всётаки касается нескольких компов - а тут вопрос локальной машины. Хотя надо попробывать.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
mva
  опции профиля:
сообщение 26.6.2009, 18:29
Сообщение #6


Участник
**

Группа: Участник
Сообщений: 104
Регистрация: 15.3.2009
Из: Киров
Пользователь №: 615

Спасибо сказали: 3 раз(а)




Репутация:   0  


Цитата(flankerr @ 26.6.2009, 18:45) *
как послать udp пакет чтобы его "поймали" все приложения запущеные на данном компе и слушающие порт на который был послан пакет


Если предположить, что на один порт можно "повесить" несколько приложений, то как по-твоему ОС, не важно какая, должна определить какому именно приложению отдать принятый пакет? Протокол UDP означает только то, что пакет предназначен всем компьютерам подсети, а не то, что всем приложениям на каждом компе. Пакет IP (в теле которого записан UDP пакет) имеет атрибут "порт получателя", по которому ОС определяет, какому приложению его отдать.

Так что ничего из этой затеи не выйдет. Учи протокол TCP/IP.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
flankerr
  опции профиля:
сообщение 26.6.2009, 19:16
Сообщение #7


Активный участник
***

Группа: Участник
Сообщений: 356
Регистрация: 9.1.2008
Пользователь №: 65

Спасибо сказали: 2 раз(а)




Репутация:   0  


Цитата(mva @ 26.6.2009, 19:29) *
Если предположить, что на один порт можно "повесить" несколько приложений,

А елси просто почитать эту тему то можно не просто предположить а точно знать.
QUdpSocket::ReuseAddressHint|QUdpSocket::ShareAddress

Цитата
то как по-твоему ОС, не важно какая, должна определить какому именно приложению отдать принятый пакет?

прямо в цель! по логике должна отдать ВСЕМ. но почему то этого не делает... А отдаёт только одному и как ОС определяет в какой сокет отдать пока загадка.

Цитата
Так что ничего из этой затеи не выйдет. Учи протокол TCP/IP.

Возможно и не выйдет и разумеется учение свет :) Но таки то что на один порт можно повесить несколько сокетов вдохновляет на поиски ;)

Сообщение отредактировал flankerr - 26.6.2009, 19:16
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
niXman
  опции профиля:
сообщение 26.6.2009, 21:28
Сообщение #8


Участник
**

Группа: Участник
Сообщений: 169
Регистрация: 18.6.2008
Пользователь №: 204

Спасибо сказали: 1 раз(а)




Репутация:   0  


Тупик! Я поднимал эту тему.
http://forum.vingrad.ru/topic-217764.html

Сообщение отредактировал niXman - 26.6.2009, 21:30
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
flankerr
  опции профиля:
сообщение 28.6.2009, 21:17
Сообщение #9


Активный участник
***

Группа: Участник
Сообщений: 356
Регистрация: 9.1.2008
Пользователь №: 65

Спасибо сказали: 2 раз(а)




Репутация:   0  


у меня пока не было времени более детально мультикаст протестить.
А так есть вариант ограничить максимальное число локальных приложений и выделить каждому свой отдельный порт и рассылать на заданный диапозон портов. Конечно не совем то что хотелось но как вариант.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
niXman
  опции профиля:
сообщение 28.6.2009, 23:14
Сообщение #10


Участник
**

Группа: Участник
Сообщений: 169
Регистрация: 18.6.2008
Пользователь №: 204

Спасибо сказали: 1 раз(а)




Репутация:   0  


Да.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 22.8.2019, 18:22