Win32 interface for using sockets. More...
#include <socket_traits_win32.hpp>
Public Types | |
typedef SOCKET | descriptor |
Type of the system description of the socket. | |
Static Public Member Functions | |
static bool | init () |
Initialize the use of the socket library. | |
static bool | release () |
Close the socket library. | |
static descriptor | open () |
Open a socket. | |
static bool | close (descriptor d) |
Close a socket. | |
static bool | connect (descriptor d, const std::string &address, int port) |
Connect a socket to a port. | |
static bool | listen (descriptor d, int port, unsigned int queue_size) |
Open a socket for incoming connexions. | |
static bool | select_read (descriptor d, int time_limit=-1) |
Select a socket for reading. | |
static descriptor | accept (descriptor d) |
Accept an incoming connexion. | |
static bool | valid_descriptor (descriptor d) |
Tell if a descriptor is a valid socket descriptor. | |
static bool | is_open (descriptor d) |
Tell if a descriptor is a opened socket. | |
Static Public Attributes | |
static const descriptor | invalid_socket = INVALID_SOCKET |
Invalid socket descriptor. |
Win32 interface for using sockets.
Definition at line 46 of file socket_traits_win32.hpp.
typedef SOCKET claw::socket_traits_win32::descriptor |
Type of the system description of the socket.
Definition at line 50 of file socket_traits_win32.hpp.
static descriptor claw::socket_traits_win32::accept | ( | descriptor | d | ) | [inline, static] |
Accept an incoming connexion.
d | The descriptor of the socket to listen. |
Definition at line 203 of file socket_traits_win32.hpp.
00204 { 00205 return ::accept( d, NULL, NULL ); 00206 } // socket_traits_win32::accept()
static bool claw::socket_traits_win32::close | ( | descriptor | d | ) | [inline, static] |
Close a socket.
d | The descriptor of the socket to close. |
Definition at line 102 of file socket_traits_win32.hpp.
static bool claw::socket_traits_win32::connect | ( | descriptor | d, | |
const std::string & | address, | |||
int | port | |||
) | [inline, static] |
Connect a socket to a port.
d | The descriptor of the socket to connect. | |
address | The adress to connect to. | |
port | The port to connect to. |
Definition at line 115 of file socket_traits_win32.hpp.
References CLAW_PRECOND, and invalid_socket.
00116 { 00117 CLAW_PRECOND( d != invalid_socket ); 00118 00119 bool result=false; 00120 struct hostent* hp = gethostbyname(address.c_str()); 00121 00122 if (hp) 00123 { 00124 struct sockaddr_in sa; 00125 00126 memset (&sa, '\0', sizeof(sa)); 00127 sa.sin_family = hp->h_addrtype; 00128 sa.sin_port = htons(port); 00129 memcpy( &sa.sin_addr, hp->h_addr, hp->h_length ); 00130 00131 if ( ::connect(d, (struct sockaddr*)&sa, sizeof(sa)) != SOCKET_ERROR ) 00132 result = true; 00133 } 00134 00135 return result; 00136 } // socket_traits_win32::connect()
static bool claw::socket_traits_win32::init | ( | ) | [inline, static] |
Initialize the use of the socket library.
Definition at line 62 of file socket_traits_win32.hpp.
static bool claw::socket_traits_win32::is_open | ( | descriptor | d | ) | [inline, static] |
Tell if a descriptor is a opened socket.
d | The descriptor to test. |
Definition at line 223 of file socket_traits_win32.hpp.
References valid_descriptor().
00224 { 00225 return valid_descriptor(d); 00226 } // socket_traits_win32::is_open()
static bool claw::socket_traits_win32::listen | ( | descriptor | d, | |
int | port, | |||
unsigned int | queue_size | |||
) | [inline, static] |
Open a socket for incoming connexions.
d | The descriptor of the socket to open. | |
port | The port to connect to. | |
queue_size | The size of the queue for incoming connexions. |
Definition at line 146 of file socket_traits_win32.hpp.
References CLAW_PRECOND, and invalid_socket.
00147 { 00148 CLAW_PRECOND( d != invalid_socket ); 00149 00150 struct sockaddr_in addr; 00151 00152 memset (&addr, '\0', sizeof(addr)); 00153 addr.sin_family = AF_INET; 00154 addr.sin_port = htons(port); 00155 addr.sin_addr.s_addr = htonl(INADDR_ANY); 00156 00157 if ( bind(d, (struct sockaddr*)&addr, sizeof(addr)) != SOCKET_ERROR ) 00158 return ::listen(d, queue_size) != SOCKET_ERROR; 00159 else 00160 return false; 00161 } // socket_traits_win32::connect()
static descriptor claw::socket_traits_win32::open | ( | ) | [inline, static] |
Open a socket.
Definition at line 87 of file socket_traits_win32.hpp.
References invalid_socket.
00088 { 00089 descriptor fd = invalid_socket; 00090 00091 fd = socket(AF_INET, SOCK_STREAM, 0); 00092 00093 return fd; 00094 } // socket_traits_win32::open()
static bool claw::socket_traits_win32::release | ( | ) | [inline, static] |
Close the socket library.
Definition at line 77 of file socket_traits_win32.hpp.
static bool claw::socket_traits_win32::select_read | ( | descriptor | d, | |
int | time_limit = -1 | |||
) | [inline, static] |
Select a socket for reading.
d | The descriptor of the socket to read. | |
time_limit | Maximum of seconds to wait before considering there's nothing to read. If time_limit is negative, the method wait until there is something to read. |
Definition at line 172 of file socket_traits_win32.hpp.
References CLAW_PRECOND, and invalid_socket.
00173 { 00174 CLAW_PRECOND( d != invalid_socket ); 00175 00176 struct timeval tv, *ptv; 00177 fd_set fds; 00178 00179 if ( time_limit < 0 ) 00180 ptv = NULL; 00181 else 00182 { 00183 tv.tv_sec = time_limit; 00184 tv.tv_usec = 0; 00185 00186 ptv = &tv; 00187 } 00188 00189 FD_ZERO(&fds); 00190 FD_SET(d, &fds); 00191 00192 select( d+1, &fds, NULL, NULL, ptv ); 00193 00194 return FD_ISSET( d, &fds ); 00195 } // socket_traits_win32::select_read()
static bool claw::socket_traits_win32::valid_descriptor | ( | descriptor | d | ) | [inline, static] |
Tell if a descriptor is a valid socket descriptor.
d | The descriptor to test. |
Definition at line 213 of file socket_traits_win32.hpp.
References invalid_socket.
Referenced by is_open().
00214 { 00215 return d != invalid_socket; 00216 } // socket_traits_win32::valid_descriptor()
const descriptor claw::socket_traits_win32::invalid_socket = INVALID_SOCKET [static] |
Invalid socket descriptor.
Definition at line 54 of file socket_traits_win32.hpp.
Referenced by connect(), listen(), open(), select_read(), and valid_descriptor().