Я использую библиотеки POCO c ++, и я в растерянности. Есть ли способ установить порт источника при отправке дейтаграммы UDP? Похоже, что он всегда настроен на порт назначения, но, безусловно, это возможно.
Мой код выглядит примерно так:
Poco::Net::SocketAddress bcast("255.255.255.255", m_txPort);
DatagramSocket dgs = DatagramSocket(bcast,false);
dgs.setBroadcast(true);
dgs.sendTo(data,dataLength, broad);
В противном случае я могу переключиться на Boost — я полагаю, Boost может сделать это, верно?
Должно работать просто отлично; вы передаете SocketAddress с адресом источника и портом в ваш DatagramSocket
конструктор, который говорит, к какому локальному адресу привязываться; следуя вашему примеру;
Poco::Net::SocketAddress sourceAddress("255.255.255.255", source_port);
DatagramSocket dgs(source_address,false);
Затем вы передаете отдельный сокет-адрес с адресом назначения и портом в SendTo
,
Poco::Net::SocketAddress destAddress(destination_address, destination_port);
dgs.setBroadcast(true);
dgs.sendTo(data,dataLength, destAddress);
Других решений пока нет …