title: What is the difference between tcp::endpoint and udp::endpoint in Boost::Asio?
body: <p>It seems <code>boost::asio</code> defines a separate endpoint class for each protocol, which is irritating if you want to perform both UDP and TCP operations on a particular endpoint (have to convert from one to the other). I'd always just thought of an endpoint as an IP address (v4 or v6) and the port number, regardless of TCP or UDP. </p>
  
  <p>Are there significant differences that justify separate classes? (i.e. couldn't both <code>tcp::socket</code> and <code>udp::socket</code> accept something like <code>ip::endpoint</code>?)</p>