![]() |
Модераторы: Snowy, Poseidon, MetalFan |
![]() ![]() ![]() |
|
Dayana |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 352 Регистрация: 6.10.2002 Где: Тель-Авив Репутация: 1 Всего: 4 |
У меня вот такая проблема. От одного устройства (модема) по лану приходят пакеты. Просматривая снифером, вижу порт, IP отправителя и IP получателя. Но они отличны от IP самого устройства и IP который определила в Local Area Connection. Это модуляция пакетов через модем. Задача получать эти пакеты. Открываю сокет TWSocket. Протокол udp, Addr = '0.0.0.0', т.е от любого клиента. И ставлю номер порта, который показал мне снифер. Т.к. протокол udp, то после соединения пользуюсь методом RecieveFrom, который получает пакет в буфер и также возвращает адрес отправителя.
Пакеты модем посылает, а сокет ничего не получает. Я с этим совсем мало работала. Может кто-нибудь знает в чем ошибка? Код проверки пока такой
Спасибо! Это сообщение отредактировал(а) Dayana - 4.2.2003, 19:31 |
|||
|
||||
Dayana |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 352 Регистрация: 6.10.2002 Где: Тель-Авив Репутация: 1 Всего: 4 |
Я вот нашла, чтобы настроить сокет на прием пакетов, надо установить флаг PROMISC - установка режима перехвата на сетевой карте.
Есть исходники на С++. Там используются функции API. Может кто знает, как такой флаг установить, пользуясь TWSocket, и есть ли он там вообще? |
|||
|
||||
Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: нет Всего: 12 |
А кто тебе мешает создать сокет руками через апи? без компонентов.
з.ы. с вероятностью в 99% могу сказать, что в твоем компоненте выставить PROMISC низя. -------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
Medved |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 7209 Регистрация: 15.9.2002 Где: Kazakhstan, Astan a Репутация: нет Всего: 154 |
Да.... полностью с Baa согласен.... я сейчас тоже занимаюсь этими вопросами, и попробовав кучу компонентов, пришел к выводу, что лучше при работе с сокетами использовать API, это надежно, позволяет программировать без ограничений, хотя долго и утомительно....
-------------------- |
|||
|
||||
Dayana |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 352 Регистрация: 6.10.2002 Где: Тель-Авив Репутация: 1 Всего: 4 |
Baa, нашла такую ф-циюWSocket-ioctlsocket, которой передается handle на сокет, а также флаг который устанавливает режим перехвата. Этот флаг я взяла вот с этого кода
И написала у себя вот так
WSocket_ioctlsocket - это аналог ioctlsocket. Но все равно ничего не работает. Код на С++ у меня нет возможности проверить. В принципе handle сокета я передаю, и нет разницы как он был создан через API или как компонент. |
||||
|
|||||
Dayana |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 352 Регистрация: 6.10.2002 Где: Тель-Авив Репутация: 1 Всего: 4 |
Pegas, писала ответ с тобой одновременно.
Ты не мог бы дать основные ф-ции API, которые позволяют создать сокет и работать с ним? |
|||
|
||||
Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: нет Всего: 12 |
Если я не ошибаюсь (давно это было), то в IFF_PROMISC mode может выставится токо RAW сокет.
-------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
<Spawn> |
|
|||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: 1 Всего: 64 |
Открой файл WinSock или IdWinSock2(Если Delphi 7). Тама есть эти самые функции. -------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
|||
|
||||
<Spawn> |
|
|||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: 1 Всего: 64 |
А так основные функции это -
Socket() Bind() CloseSocket() Accept() Send() Recv() SendTo() RecvFrom() Ну и их асинхронные аналоги(с приставкой WSA). Причем перед их использованием необходимо загрузить WinSock WSAStartUp() и потом выгрузить WSACleanUp; Разумеется это не полный список функций, но для начала и их хватит) -------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
|||
|
||||
Dayana |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 352 Регистрация: 6.10.2002 Где: Тель-Авив Репутация: 1 Всего: 4 |
Делаю вот так
открываю его как RAW.... но все равно ничего не получает...:-( |
|||
|
||||
Dayana |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 352 Регистрация: 6.10.2002 Где: Тель-Авив Репутация: 1 Всего: 4 |
<Spawn>, спасибо! Уже нашла...
|
|||
|
||||
Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: нет Всего: 12 |
Dayana попробуй порт выставить в 0...
з.ы. дома буду, че-нить придумаю... -------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
Dayana |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 352 Регистрация: 6.10.2002 Где: Тель-Авив Репутация: 1 Всего: 4 |
Baa, спасибочки!
|
|||
|
||||
Dayana |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 352 Регистрация: 6.10.2002 Где: Тель-Авив Репутация: 1 Всего: 4 |
Baa, нашла в чем была ошибка. Совсем упустила из виду, что на компе установлены 2 сетевые карты. Одна с динамическим DNS для выхода в локальную сеть. А другая, с которой мне надо работать, с определенным IP и SUBNET MASK. Если отключаю локальную сеть и подключаю туда модем, т.е. в сетевую карту с динамическим DNS, то все работает. Но мне надо работать с другой сетевой картой.
Есть ли какая-нибудь возможность указать сокету с каким адаптером работать? |
|||
|
||||
Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: нет Всего: 12 |
Дык при бинде ж указываешь ему на какой ип...
У тя gethostbyname возвращает первичный сетевой адрес, а вот вторичный остается не у дел... Пробуй сама заполнить структуру с адресом. -------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Сети" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Сети | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |