X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Socket%2FTCPSocketHandle.cc;h=de4b0d43c5640626e276b84032ab530ec8e094fb;hb=e9230af25004d2e3eb041778afc493c5b300c43b;hp=7202fe384aeeaa38284ddb9609e738845391f9d2;hpb=d0006132bfcb3ab442cf66b600ed3fad36f1ac2c;p=senf.git diff --git a/Socket/TCPSocketHandle.cc b/Socket/TCPSocketHandle.cc index 7202fe3..de4b0d4 100644 --- a/Socket/TCPSocketHandle.cc +++ b/Socket/TCPSocketHandle.cc @@ -38,6 +38,9 @@ #define prefix_ ///////////////////////////////cc.p//////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////// +// senf::TCPv4SocketProtocol + prefix_ void senf::TCPv4SocketProtocol::init_client() const { @@ -81,6 +84,52 @@ prefix_ std::auto_ptr senf::TCPv4SocketProtocol::clone() return std::auto_ptr(new TCPv4SocketProtocol()); } +/////////////////////////////////////////////////////////////////////////// +// senf::TCPv6SocketProtocol:: + +prefix_ void senf::TCPv6SocketProtocol::init_client() + const +{ + int sock = ::socket(PF_INET6,SOCK_STREAM,0); + if (sock < 0) + throw SystemException(errno); + body().fd(sock); +} + +prefix_ void +senf::TCPv6SocketProtocol::init_client(INet6SocketAddress const & address) + const +{ + init_client(); + connect(address); +} + +prefix_ void senf::TCPv6SocketProtocol::init_server() + const +{ + int sock = ::socket(PF_INET6,SOCK_STREAM,0); + if (sock < 0) + throw SystemException(errno); + body().fd(sock); +} + +prefix_ void senf::TCPv6SocketProtocol::init_server(INet6SocketAddress const & address, + unsigned backlog) + const +{ + init_server(); + bind(address); + reuseaddr(true); + if (::listen(body().fd(),backlog) < 0) + throw SystemException(errno); +} + +prefix_ std::auto_ptr senf::TCPv6SocketProtocol::clone() + const +{ + return std::auto_ptr(new TCPv6SocketProtocol()); +} + ///////////////////////////////cc.e//////////////////////////////////////// #undef prefix_ //#include "TCPSocketHandle.mpp"