TCPSocketHandle.cc
Go to the documentation of this file.
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00027 #include "TCPSocketHandle.hh"
00028
00029
00030
00031 #include <sys/types.h>
00032 #include <sys/socket.h>
00033 #include <sys/ioctl.h>
00034
00035 #include <senf/Utils/Exception.hh>
00036
00037
00038 #define prefix_
00039
00040
00041
00042
00043
00044 prefix_ void senf::TCPv4SocketProtocol::init_client()
00045 const
00046 {
00047 int sock = ::socket(PF_INET,SOCK_STREAM,0);
00048 if (sock < 0)
00049 SENF_THROW_SYSTEM_EXCEPTION("");
00050 fd(sock);
00051 }
00052
00053 prefix_ void
00054 senf::TCPv4SocketProtocol::init_client(INet4SocketAddress const & address)
00055 const
00056 {
00057 init_client();
00058 clientHandle().connect(address);
00059 }
00060
00061 prefix_ void senf::TCPv4SocketProtocol::init_server()
00062 const
00063 {
00064 int sock = ::socket(PF_INET,SOCK_STREAM,0);
00065 if (sock < 0)
00066 SENF_THROW_SYSTEM_EXCEPTION("");
00067 fd(sock);
00068 }
00069
00070 prefix_ void senf::TCPv4SocketProtocol::init_server(INet4SocketAddress const & address,
00071 unsigned backlog)
00072 const
00073 {
00074 init_server();
00075 reuseaddr(true);
00076 serverHandle().bind(address);
00077 if (::listen(fd(),backlog) < 0)
00078 SENF_THROW_SYSTEM_EXCEPTION("");
00079 }
00080
00081
00082
00083
00084 prefix_ void senf::TCPv6SocketProtocol::init_client()
00085 const
00086 {
00087 int sock = ::socket(PF_INET6,SOCK_STREAM,0);
00088 if (sock < 0)
00089 SENF_THROW_SYSTEM_EXCEPTION("");
00090 fd(sock);
00091 }
00092
00093 prefix_ void
00094 senf::TCPv6SocketProtocol::init_client(INet6SocketAddress const & address)
00095 const
00096 {
00097 init_client();
00098 clientHandle().connect(address);
00099 }
00100
00101 prefix_ void senf::TCPv6SocketProtocol::init_server()
00102 const
00103 {
00104 int sock = ::socket(PF_INET6,SOCK_STREAM,0);
00105 if (sock < 0)
00106 SENF_THROW_SYSTEM_EXCEPTION("");
00107 fd(sock);
00108 }
00109
00110 prefix_ void senf::TCPv6SocketProtocol::init_server(INet6SocketAddress const & address,
00111 unsigned backlog)
00112 const
00113 {
00114 init_server();
00115 serverHandle().bind(address);
00116 reuseaddr(true);
00117 if (::listen(fd(),backlog) < 0)
00118 SENF_THROW_SYSTEM_EXCEPTION("");
00119 }
00120
00121
00122 #undef prefix_
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134