Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Boost Asio type to use for both unix-socket and tcp socket

We have a boost asio based networking code, which connects to a remote side. The local side could be either a tcp4 socket or a unix socket.

Is there a typename to use that could hold both of these type of boost sockets? (e.g. something like a base class for both?). Currently our code use boost::asio::generic::stream_protocol::socket for tcp socket, and boost::asio::local::stream_protocol::socket for a unix socket.

like image 649
Guy Avatar asked Mar 23 '23 05:03

Guy


1 Answers

Actually, there's a dedicated ip::tcp::socket type for tcp sockets. As for generic::stream_protocol::socket, it is the universal stream socket type that accepts socket protocol and family in run-time, so you can use it for the both types you need:

generic::stream_protocol::socket ipc(io_, generic::stream_protocol(AF_UNIX, 0));
generic::stream_protocol::socket tcp(io_, generic::stream_protocol(AF_INET, IPPROTO_TCP));
like image 78
Igor R. Avatar answered Apr 06 '23 10:04

Igor R.