ソケットの作成方法が異なります
socket(PF_INET, SOCK_STREAM)
TCP の場合、および
socket(PF_INET, SOCK_DGRAM)
UDP用。
Boost.Asio で型が異なるのはそのためだと思います。man 7 udp
または詳細についてman 7 tcp
は、質問にタグを付けていないため、Linuxを想定しています。
問題を解決するには、TCP エンドポイントから IP とポートを抽出し、UDP エンドポイントをインスタンス化します。
#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;
}
サンプル呼び出し:
./a.out
tcp: 127.0.0.1:123
udp: 127.0.0.1:123