Sockets are created differently.
socket(PF_INET, SOCK_STREAM)
for TCP and
socket(PF_INET, SOCK_DGRAM)
for UDP.
I suspect this is the reason for the different types in Boost.Asio. See man 7 udp or man 7 tcp for more information. I assume Linux since you did not mark your question.
To solve your problem, extract the IP and port from the TCP endpoint and create an instance of the UDP endpoint.
#include <boost/asio.hpp> #include <iostream> int main() { using namespace boost::asio; ip::tcp::endpoint tcp( ip::address::from_string("127.0.0.1"), 123 ); ip::udp::endpoint udp( tcp.address(), tcp.port() ); std::cout << "tcp: " << tcp << std::endl; std::cout << "udp: " << udp << std::endl; return 0; }
Sample call:
./a.out tcp: 127.0.0.1:123 udp: 127.0.0.1:123
Sam miller
source share