Обмен По Udp Через Маршрутизатор

YuryD

New member
22.02.2008
4
0
#1
Здравствуйте.
Пишу UDP терминал для обмена пакетами с удаленным терминалом. Всё хорошо работает, пока оба терминала в одной подсети. Когда же один из терминалов запускают в другой подсети, т.е. через маршрутизатор, обмена нет. Ниже приведен код инициализации UDP сокетов. Нигде не задается ни маска подсети, ни шлюз. Это правильно?

sockfd1 = socket(AF_INET, SOCK_DGRAM, 0);
sockfd2 = socket(AF_INET, SOCK_DGRAM, 0);

ZeroMemory(&servaddr, sizeof(servaddr));
ZeroMemory(&cliaddr, sizeof(cliaddr));
cliaddr.sin_family = AF_INET;
cliaddr.sin_addr.s_addr = inet_addr("192.168.1.254");
cliaddr.sin_port = htons(6000);

servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
servaddr.sin_port = htons(12345);
bind(sockfd1, (struct sockaddr *)&servaddr, sizeof(servaddr));

FD_ZERO(&fds);
FD_SET(sockfd1, &fds);

ReceiveTimeout.tv_sec = 0;
ReceiveTimeout.tv_usec = 5000000; // 5 s

sendto(sockfd2, req, strlen(req), 0, (struct sockaddr *)&cliaddr,sizeof(cliaddr));

iRC = select(sockfd1+1, &fds, NULL, NULL, &ReceiveTimeout);

if (iRC)
{
n = recv(sockfd1, recvstr, 100, 0);
///
...
///
}

Что надо дописать в код, чтобы оно работало через маршрутизатор?
Спасибо.
 

wowchock

New member
28.01.2011
3
0
#4
Может на маршрутизаторе access-list не пропускает данный вид трафика?
 

Valimor

Well-known member
10.04.2010
45
0
#6
тоже скоро буду прогу под UDP протокол писать)
нашел в чем ощибка?
 

YuryD

New member
22.02.2008
4
0
#7
На самом деле проблемы не существует. Доступ из подсути в подсеть - это вопрос настроек сетевого адаптера, а не сокетов. При правильной настройке сетевых соединений обмен через сокеты производится без ограничений на количество шлюзов и организацию подсетей. С точки зрения программиста есть IP и есть порты, а как данные попадут от одного IP к другому должны заботиться сисадмины при организации сети.