Здравствуйте, AlexGin, Вы писали:
AG>Доброе время суток, уважаемые коллеги!
AG>Вот, предположим, что у нас имеется:
AG>a) Первая сеть с адресами: 192.168.1.XX AG>b) Вторая сеть с адресами: 192.168.2.XX
AG>Также предположим (для упрощения) что есть три компьютера: AG>1) 192.168.1.1 — первый узел. AG>2) 192.168.2.1 — второй узел. AG>3) Имеется шлюз с подсоединением к двум вышеуказаннып сетям - AG>его адреса: 192.168.1.7 и 192.168.2.7.
AG>Вопрос: AG>Как (на уровне UDP-сокетов) через этот самый шлюз транслировать UDP пакеты — от 192.168.1.1 к 192.168.2.1 и обратно?
Эээ
я не понял — этот "шлюз" он таки предназначен раутить пакеты сквозь себя или нет?
Если да — то вообще никакой особой заботы не нужно — IP стек всё сделает, просто 192.168.1.1 отправляет пакет на 192.168.2.1, и наоборот.
Если нет — то какая-то программа должна принимать на 192.168.1.7 датаграммки и передавать на 192.168.2.1, и в обратную сторону. Но зачем? (Ниже — с этим вариантом)
AG>Желательно — с привязкой к POSIX реализации.
Вам как — в одну нитку или в две? (два процесса?)
если можно две — тогда каждая из них делает socket(), bind(), и вечный цикл из recv() и sendto(). Отличаются только адреса.
Если одну — то, например, писать на движке событий поверх libuv, ASIO и десятков других аналогов.