2012-09-09 4 views
0

Я использую библиотеки COC POCO, и я в недоумении. Есть ли способ установить исходный порт при отправке дейтаграммы UDP? Похоже, что он всегда установлен в порт назначения, но, безусловно, это возможно.Библиотеки POCO: возможно установить порт источника UDP?

Мой код выглядит примерно так:

Poco::Net::SocketAddress bcast("255.255.255.255", m_txPort); 
DatagramSocket dgs = DatagramSocket(bcast,false); 
dgs.setBroadcast(true); 
dgs.sendTo(data,dataLength, broad); 

В противном случае, я мог бы быть переключение для увеличения - Я предполагаю, что повышение может сделать это, не так ли?

ответ

1

Должно работать нормально; вы передаете SocketAddress с исходным адресом и портом в свой конструктор DatagramSocket, в котором указывается, к какому локальному адресу привязывается; после вашего примера;

Poco::Net::SocketAddress sourceAddress("255.255.255.255", source_port); 
DatagramSocket dgs(source_address,false); 

Затем вы проходите отдельный socketaddress с адресом назначения и порт в SendTo.

Poco::Net::SocketAddress destAddress(destination_address, destination_port); 
dgs.setBroadcast(true); 
dgs.sendTo(data,dataLength, destAddress); 
+0

К сожалению, когда я пытаюсь использовать другой адрес SocketAddress в sendTo, чем тот, который используется для создания DatagramSocket, я вообще не получаю никаких пакетов. (Я смотрю с Wireshark). Я согласен, что это похоже на правильный способ сделать это - я просто не могу заставить его работать. – Scott

+0

Я ошибаюсь - ты совершенно прав. Мне просто потребовалось немного времени для работы (по какой-то причине я нуждался в повторном использованииAddress set True в двух местах, и это вызывало множество проблем). – Scott

Смежные вопросы