LINUX.ORG.RU

Мост на C++

 , ,


0

2

Решил написать мост на С++, на rawSocket. Но столкнулся с массой неприятностей. Сначала пробовал сделать два потока в которых создал по два сокета : если в один приходит - то из другого послать. Аналогично сделал с другим потоком. Вышло так , что первый пакет который приходил дублировался и посылался трилион раз. Непонятно почему , ведь сокет был не в nonblock-моде. Далее пробовал epoll(тут офк нонблок мод поставил). Вроде даже получилось, но как то не так все то работает, то работает криво, то вообще никак. Работает криво это с одного ПК идут только АРПпинги но обычный не идет . Зато с другого идет и пинг и АРПпинг. Я даже заметил то что почти всегда работает только когда включаю Wireshark, но опять же не всегда. Может знаете как лучше это делать или какие то очевидные ошибки ,которые мне не понять. Код вот, http://pastebin.com/j8fgz7mC

Сначала пробовал сделать два потока в которых создал по два сокета : если в один приходит - то из другого послать. Аналогично сделал с другим потоком. Вышло так , что первый пакет который приходил дублировался и посылался трилион раз.

Сырые сокеты принимают все пакеты, независимо от того, кому они адресованы. На этом и держатся сниферы. Поэтому когда ты посылаешь пакет одному потоку, его одновременно перехватывает 2-й поток. Когда ты посылаешь этот пакет из 2-ого, его перехватывает первый и снова посылает 2-ому. И так до бесконечности. Измени алгоритм.

aureliano15 ★★
()
Ответ на: комментарий от anonymous

Нет, так как её не существует :(

Есть то, что называется модель TCP/IP или модель DOD, но она особо ни о чём и тоже немного дырявая (т.к. на самом деле tcp и udp немного залезают внутрь ip).

vzzo ★★★
()
Ответ на: комментарий от vzzo

в свою очередь, мосты ничего не знают ни про tcp, ни про ip

бида-пичаль

anonymous
()
Ответ на: комментарий от anonymous

Чево ??? Если уж ты говоришь про rawsocket и мост, то формально ты прав. Но на деле мне нужно принять чистые данные c одного интерфейса и отправить на другой.

xionovermazes
() автор топика
Ответ на: комментарий от xionovermazes

P . S. Попробую с мьютексами изменить алгоритм . А то вдруг чево подумают

xionovermazes
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.