consiglio di mantenere le cose semplici:
#include <boost/asio.hpp>
int main() {
boost::asio::io_service io_service;
using boost::asio::local::stream_protocol;
stream_protocol::socket s(io_service);
s.connect("/tmp/socket");
}
Non c'è dubbio che si può andare più a basso livello, ma non sono sicuro che quando avresti bisogno di questo.
UPDATE Imitando il pre-definito stream_protocol
, ecco come definire seqpacket_protocol
:
Live On Coliru
namespace SeqPacket {
using namespace boost::asio::local;
struct seqpacket_protocol
{
int type() const { return IPPROTO_SCTP; }
int protocol() const { return 0; }
int family() const { return AF_UNIX; }
typedef basic_endpoint<seqpacket_protocol> endpoint;
typedef boost::asio::basic_stream_socket<seqpacket_protocol> socket;
typedef boost::asio::basic_socket_acceptor<seqpacket_protocol> acceptor;
#if !defined(BOOST_ASIO_NO_IOSTREAM)
/// The UNIX domain iostream type.
typedef boost::asio::basic_socket_iostream<seqpacket_protocol> iostream;
#endif // !defined(BOOST_ASIO_NO_IOSTREAM)
};
}
Basta usare lo stesso schema:
int main() {
boost::asio::io_service io_service;
using SeqPacket::seqpacket_protocol;
seqpacket_protocol::socket s(io_service);
s.connect("socket");
}
Leggerò un po 'per vedere se riesco a capire cosa fa SEQPACKET. Posso aggiornare se ottengo :) – sehe
Aggiornato con un esempio che utilizza 'IPPROTO_SCTP' come prescritto. – sehe
molte grazie, ma mi chiedo perché gli autori non hanno aggiunto seqpacket al set di protocolli :: local – Martin