Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: WinSock Сеть Tcp/Udp слушать порт но не перехватывать его  (Прочитано 26714 раз)
0 Пользователей и 1 Гость смотрят эту тему.
LightSin
The question title sounds to me the same as "Convert banana into a pistol"... :-)
Постоялец

ru
Offline Offline
id/fm105


« : 06-04-2012 08:05 » 

При создание WinSock подключений tcp или udp возник вопрос
как выбрать адаптер с которого будет осуществляться соединение?
вроде с каким адресом свяжешь(192.135.4.1 или 192.168.2.2) вызов bind  например
192.168.2.2  сетевая карточка 1  
192.135.4.1  сетевая карточка 2
но возникает вопрос.. как послать в сетевой адаптер 2(192.135.4.1) но с адресом уже от сетевая карточка 1(192.168.2.2) (не кая подмена адреса хоста)
 наверное это уже библиотеки WinPcap? более низкий уровень мол

Стоит антивир который слушает 25 порт smtp мол почта проверяет и тд
вот хочу тоже сделать что то подобное, слушать порт но не перехватывать его.. от других программ
(чтоб почт клиент мог получать письма без помех хм)
вродеб подумал в сторону не блокируемых сокетов  Жду...

прошу разъяснить, что как) у кого какие мысли Ребенок
« Последнее редактирование: 06-04-2012 11:03 от LightSin » Записан

Lost in the jungle: 1c, PIC AVR, C++, Python flask, (no Java) JS . for fun: Live For Speed S2 Drift Edition, TeeWorlds
darkelf
Молодой специалист

no
Offline Offline

« Ответ #1 : 06-04-2012 08:43 » 

если не перехватывать от других программ, то, имхо, это уже к Winpcap, или писать свой драйвер.
Записан
LightSin
The question title sounds to me the same as "Convert banana into a pistol"... :-)
Постоялец

ru
Offline Offline
id/fm105


« Ответ #2 : 06-04-2012 10:37 » 

если не перехватывать от других программ, то, имхо, это уже к Winpcap, или писать свой драйвер.
антивир без winpcap работает наверное...
извиняюсь наверное плохо осмысление не перехватывать от других программ
я думаю что надо создать не блокируем сокет который будет слушать 25 порт, так будет возможность другим программа читать с порта.
а если блокируемый то он займет порт... хм или я не прав как делают?
« Последнее редактирование: 06-04-2012 11:02 от LightSin » Записан

Lost in the jungle: 1c, PIC AVR, C++, Python flask, (no Java) JS . for fun: Live For Speed S2 Drift Edition, TeeWorlds
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 06-04-2012 11:28 » 

LightSin, 25 порт - это SMTP. Причём тут антивирус и SMTP. Предлагаю объяснить всё с самого начала - телепаты в отпуске.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
darkelf
Молодой специалист

no
Offline Offline

« Ответ #4 : 06-04-2012 12:02 » 

LightSin, антивирус, имхо, обычно содержит драйвер уровня ядра, который позволяет ему делать то, что другим программам не позволено, как-то перехватывать ввод-вывод с диска, сканировать трафик и прочее. Если Вы сможете таковой реализовать - действительно никакого winpcap-а не потребуется. Кроме того, если Вы внимательно почитаете документацию по tcp/ip Вы заметите что штатно двум процессам висеть на одном и том-же интерфейсе и порту не разрешено, принимать на какой-то порт может только кто-то один.
« Последнее редактирование: 06-04-2012 12:06 от darkelf » Записан
zubr
Гость
« Ответ #5 : 06-04-2012 12:42 » 

Можешь попробовать так:
1. Создаем сокет socket(AF_INET, SOCK_RAW, IPPROTO_IP)
2. Инициализируем структуру
sockaddr_in::.sin_family = AF_INET
3. Указываем за каким интерфейсом будем следить
sockaddr_in::sin_addr.s_addr = inet_addr(HostIp)
3. Связываем сокет с локальным адресом
bind
4. Переключаем интерфейс на прием всех пакетов проходящих через интерфейс
iMode = 1
ioctlsocket(m_socket, 0x98000001,  (u_long FAR*) &iMode)
5. В цикле получаем пакеты
recv
Записан
v2
Помогающий

ua
Offline Offline

« Ответ #6 : 07-04-2012 10:15 » 

LightSin,
Цитата
создать не блокируем сокет который будет слушать 25 порт, так будет возможность другим программа читать с порта.

Слушать, в данном контексте, обычно означает последствия удачного вызова listen (ожидать подключения).
zubr показал как можно слышать то (все), что отправляется/принимается на уровне IP.

Синхронные (блокируемые) и асинхронные (неблокируемые) сокеты никак не связаны с невозможностью ожидать подключения на конкретный TCP/UDP порт на одном и том же интерфейсе несколькими программами одновременно.

LightSin, в твою кашу под названием WinSock положили еще только топор - читай поваренную книгу дальше.
Записан
LightSin
The question title sounds to me the same as "Convert banana into a pistol"... :-)
Постоялец

ru
Offline Offline
id/fm105


« Ответ #7 : 09-04-2012 07:33 » 

ок, спасибо! разъяснили.  изучу позже winpcap, а вот с драйверами побаиваюсь..
 
 
Цитата
zubr: Можешь попробовать так:
Ок, не знал что так можн)) попробую

LightSin, 25 порт - это SMTP. Причём тут антивирус и SMTP. Предлагаю объяснить всё с самого начала - телепаты в отпуске.
Пользуюсь AVG, в нем есть сканер почты.. как понимаю он сканирует содержимое, и наверное файлы вложенные в письмо тоже (MIME....)
после включения шифрования smtp.. антивирус отпал.. самосабой..

думал написать какоенть всплывающие окно.. о приходе почты, ну можно по мечтать... устройство реагирующие на приход почты... свет диодная лапочка ...))
так же думал об smb ловить сделать какойнть лог сервера...запросов на изменений файлов..
« Последнее редактирование: 09-04-2012 07:42 от LightSin » Записан

Lost in the jungle: 1c, PIC AVR, C++, Python flask, (no Java) JS . for fun: Live For Speed S2 Drift Edition, TeeWorlds
darkelf
Молодой специалист

no
Offline Offline

« Ответ #8 : 09-04-2012 07:50 » 

Про приход почты это отдельное задание, которое решается довольно просто и без всяких перехватов трафика. Для его решения всего лишь надо знать, адрес сервера, порт и протокол. В самом простом случае, например, протокола POP3, задача решается несколькими десятками строчек на C без использования каких-либо библиотек (ну кроме стандартной и сокетовской). Кстати, если не путаю то по smtp (25) почта отправляется (отсылается), а принимается по совсем другим протоколам, POP3 или IMAP.
« Последнее редактирование: 09-04-2012 07:57 от darkelf » Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #9 : 09-04-2012 10:23 » 

Цитата: darkelf
Кстати, если не путаю то по smtp (25) почта отправляется (отсылается), а принимается по совсем другим протоколам, POP3 или IMAP.
Путаешь. SMTP - это протокол передачи почты между почтовыми серверами. Соответственно, один сервер отправляет из ящика своего пользователя, а другой принимает в ящик своего пользователя. POP и IMAP - это протоколы взаимодействия пользователя со своим почтовым ящиком. Морально устаревший POP для почтовых клиентов, забирающих почту из ящика на локальную машину (устарело из-за множества машин у пользователя). IMAP - для удалённой работы с почтой и папками, хранящимися на сервере из разных мест (сейчас основной протокол).
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
darkelf
Молодой специалист

no
Offline Offline

« Ответ #10 : 09-04-2012 10:35 » 

Dimka, возможно я не совсем корректно высказался, но он всё-же для отправки почты, и Вы с помощью него на локальную машину почту забрать не сможете.
« Последнее редактирование: 09-04-2012 10:38 от darkelf » Записан
Dale
Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #11 : 09-04-2012 10:38 » 

Кстати, если не путаю то по smtp (25) почта отправляется (отсылается), а принимается по совсем другим протоколам, POP3 или IMAP.

Совершенно верно, ничего не путаете:

SMTP используется для отправки почты от пользователей к серверам и между серверами для дальнейшей пересылки к получателю. Для приёма почты, почтовый клиент должен использовать протоколы POP3 или IMAP.

Не все подсказки одинаково полезны (С).

Подробнее см. RFC 5321.
Записан

Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #12 : 09-04-2012 11:39 » 

Цитата: darkelf
Dimka, возможно я не совсем корректно высказался, но он всё-же для отправки почты, и Вы с помощью него на локальную машину почту забрать не сможете.
Да, с помощью SMTP ничего нельзя забрать. Он только для пересылки почты по инициативе той стороны, которая желает что-то отправить.

Если речь идёт только о взаимодействии пользователя с удалённым сервером, то можно и так сказать, что SMTP для отправки, а IMAP для получения. Но это частный случай применения SMTP.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
darkelf
Молодой специалист

no
Offline Offline

« Ответ #13 : 09-04-2012 11:49 » 

я просто написал в контексте вопроса LightSin - для которого smtp немного не подходит, да и winpcap - немного перебор.
думал написать какоенть всплывающие окно.. о приходе почты, ну можно по мечтать...

Если можно хотелось бы спросить у автора вопроса, какую он конкретно хочет решить задачу, пока их получается много и разных.
Записан
LightSin
The question title sounds to me the same as "Convert banana into a pistol"... :-)
Постоялец

ru
Offline Offline
id/fm105


« Ответ #14 : 10-04-2012 12:17 » 

Странно получается, вроде Wireshark`ом  смотрел почта приходит по smtp
верней! pop и imap управляющие протоколы(запрос на количество и тд).. а само письмо уже приходит/отходит по smtp

над посмотреть.. но вроде бы, он работает отдаленно аналогично ftp  Краснею
хотя можно убедится посмотрев на вики POP3 и IMAP там ведь только команды.. хотя хм

а так
Цитата: zubr
4. Переключаем интерфейс на прием всех пакетов проходящих через интерфейс
iMode = 1
ioctlsocket(m_socket, 0x98000001,  (u_long FAR*) &iMode)
« Последнее редактирование: 10-04-2012 12:30 от LightSin » Записан

Lost in the jungle: 1c, PIC AVR, C++, Python flask, (no Java) JS . for fun: Live For Speed S2 Drift Edition, TeeWorlds
darkelf
Молодой специалист

no
Offline Offline

« Ответ #15 : 10-04-2012 12:36 » 

Странно получается, вроде Wireshark`ом  смотрел почта приходит по smtp
верней! pop и imap управляющие протоколы(запрос на количество и тд).. а само письмо уже приходит/отходит по smtp
Действительно странно, обычно, имхо, почта отправляется по smtp, а принимается по pop3/imap, разве-что у Вас на машине запущен smtp-сервер.
Записан
zubr
Гость
« Ответ #16 : 10-04-2012 12:54 » 

Цитата
а так
Цитата: zubr
4. Переключаем интерфейс на прием всех пакетов проходящих через интерфейс
iMode = 1
ioctlsocket(m_socket, 0x98000001,  (u_long FAR*) &iMode)
Так ты будешь получать все пакеты проходящие по IP, в том числе и почтовые smtp, pop3. Их (пакеты) затем надо будет парсить и сортировать. Имхо, для задачи проверки и получения почты, этот путь слишком корявый, то же самое, что удалять аппендицит через задний проход.
Записан
LightSin
The question title sounds to me the same as "Convert banana into a pistol"... :-)
Постоялец

ru
Offline Offline
id/fm105


« Ответ #17 : 10-04-2012 13:06 » 

Имхо, для задачи проверки и получения почты, этот путь слишком корявый, то же самое, что удалять аппендицит через задний проход.
ок,  как правильней сделать надо?

над посмотреть что шлется.. а так видимо pop3/imap служат для получения почты судя по картинке, мол они расширенный и схожий smtp....                            
http://www.icmm.ru/~masich/win/lexion/mail/pop3.html
 моя ошибка, smtp только отправка.. Wireshark`ом проверил))   Флаг тебе в руки!
« Последнее редактирование: 10-04-2012 13:26 от LightSin » Записан

Lost in the jungle: 1c, PIC AVR, C++, Python flask, (no Java) JS . for fun: Live For Speed S2 Drift Edition, TeeWorlds
zubr
Гость
« Ответ #18 : 10-04-2012 13:14 » 

Попробуй погуглить, а также поискать на ресурсах типа codeproject.com исходники почтовой программы, это чтобы не тратить время на изучение почтвых протоколов.
Также можно использовть штатные средства Windows. Тот же виндовый outlook, прицепившись к его COM-объекту. Ну на самый худой конец можно вообще получить инфу с почтового сервера через банальный Web-интерфейс.
Записан
LightSin
The question title sounds to me the same as "Convert banana into a pistol"... :-)
Постоялец

ru
Offline Offline
id/fm105


« Ответ #19 : 10-04-2012 13:30 » 

прицепившись к его COM-объекту или Web-интерфейс.
Да, думал об этом, верней написал первый раз через com на AutoIt там готовые решения есть.
Записан

Lost in the jungle: 1c, PIC AVR, C++, Python flask, (no Java) JS . for fun: Live For Speed S2 Drift Edition, TeeWorlds
darkelf
Молодой специалист

no
Offline Offline

« Ответ #20 : 10-04-2012 13:43 » 

LightSin, в том документе, что Вы привели, сказано, что у них принцип работы похожий, но они выполняют разные функции. Описание протоколов имеются в том-же документе POP3 (RFC 1225), а вот тут (http://rfc2.ru/1939.rfc) даже более новая версия и на русском. Аналогично и для IMAP (RFC 2060) (http://rfc2.ru/2060.rfc)
Записан
LightSin
The question title sounds to me the same as "Convert banana into a pistol"... :-)
Постоялец

ru
Offline Offline
id/fm105


« Ответ #21 : 10-04-2012 14:00 » 

Цитата: darkelf
спасибо, за ссылку не знал о таком ресурсе.



Цитата: zubr
Попробуй погуглить, а также поискать на ресурсах типа codeproject.com исходники почтовой программы
http://www.codeproject.com/Articles/3458/A-POP3-class-with-WIN32-API-APOP-Command-support
вот нашел, посмотрел работает. Класс!
« Последнее редактирование: 11-04-2012 08:48 от LightSin » Записан

Lost in the jungle: 1c, PIC AVR, C++, Python flask, (no Java) JS . for fun: Live For Speed S2 Drift Edition, TeeWorlds
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines