48 ret = recv (fd, buffer, len, 0);
62 return send (fd, buffer, len, 0);
71 struct addrinfo hints;
72 struct addrinfo *addrinfo;
73 struct addrinfo *addrinfos;
80 memset (&hints, 0,
sizeof (hints));
82 hints.ai_family = url->
host[0] ? (ipv6 ? PF_INET6 : PF_INET) : PF_UNSPEC;
83 hints.ai_socktype = SOCK_STREAM;
84 hints.ai_protocol = 0;
90 for (addrinfo = addrinfos; addrinfo; addrinfo = addrinfo->ai_next) {
92 const char* reuseaddr = (
const char*)&_reuseaddr;
94 fd = socket (addrinfo->ai_family, addrinfo->ai_socktype, addrinfo->ai_protocol);
99 setsockopt (fd, SOL_SOCKET, SO_REUSEADDR, reuseaddr,
sizeof (_reuseaddr));
101 if (connect (fd, addrinfo->ai_addr, addrinfo->ai_addrlen) == 0) {
135 struct sockaddr sockaddr;
140 socklen =
sizeof (sockaddr);
142 fd = accept (transport->
fd, &sockaddr, &socklen);
146 const char* reuseaddr = (
const char*)&_reuseaddr;
147 const char* nodelay = (
const char*)&_nodelay;
155 setsockopt (fd, SOL_SOCKET, SO_REUSEADDR, reuseaddr,
sizeof (_reuseaddr));
156 setsockopt (fd, IPPROTO_TCP, TCP_NODELAY, nodelay,
sizeof (_nodelay));
175 struct addrinfo hints;
176 struct addrinfo *addrinfo;
177 struct addrinfo *addrinfos;
184 memset (&hints, 0,
sizeof (hints));
185 hints.ai_flags = AI_PASSIVE;
186 hints.ai_family = url->
host[0] ? (ipv6 ? PF_INET6 : PF_INET) : PF_UNSPEC;
187 hints.ai_socktype = SOCK_STREAM;
188 hints.ai_protocol = 0;
194 for (addrinfo = addrinfos; addrinfo; addrinfo = addrinfo->ai_next) {
197 const char* reuseaddr = (
const char*)&_reuseaddr;
198 const char* nodelay = (
const char*)&_nodelay;
200 fd = socket (addrinfo->ai_family, addrinfo->ai_socktype, addrinfo->ai_protocol);
205 setsockopt (fd, SOL_SOCKET, SO_REUSEADDR, reuseaddr,
sizeof (_reuseaddr));
206 setsockopt (fd, IPPROTO_TCP, TCP_NODELAY, nodelay,
sizeof (_nodelay));
208 if (bind (fd, addrinfo->ai_addr, addrinfo->ai_addrlen) !=
SOCKET_ERROR &&