UDP, Multiple IP Addresses
От: KaktusAgava  
Дата: 24.07.13 03:46
Оценка:
Привет всем.
Есть приложение — UDP сервер (Win, на IOCP, C++). Слушает соединения и отправляет результат с помощью WSASendTo.
Упрощенно это выглядит так:

addr.sin_addr.s_addr = INADDR_ANY;
addr.sin_port = htons(listen_port);

bind(s, reinterpret_cast<PSOCKADDR>(&addr), sizeof(addr));

...

WSARecvFrom(s, ...); //слушаем

...

WSASendTo(s, ...); //шлем

Все хорошо работает, но возникает проблемка, когда в свойствах TCP/IP прописано несколько IP адресов. Т.е. их, например, два: 192.168.0.10 и 192.168.0.11.
Когда клиент шлет запрос UDP-серверу на IP 192.168.0.10, то респонз обратно шлется с того же IP и все работает хорошо.
А вот когда клиент шлет запрос га IP 192.168.0.11, то респонз обратно шлется с IP 192.168.0.10 и клиент его не видит.
Не подскажете, если кто сталкивался, как это можно побороть? У WSASendTo нету к сож. параметра-ip с которого слать
У него есть только сокет,который слушает все интерфейсы (INADDR_ANY). Надо сделать так, чтобы ответ отправлялся с того же ip, на который пришел запрос.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.