{
#ifdef WIN32
WSADATA wsaData;
WORD wVersionRequested = MAKEWORD(2, 0);
if (WSAStartup( wVersionRequested, &wsaData ))
#else
port_to_use = 0;
#endif
if (port_to_use)
{
m_p->m_socket = socket(AF_INET, SOCK_STREAM, 0);
#ifndef WIN32
unsigned long one = 1;
if (setsockopt(
m_p->m_socket, SOL_SOCKET, SO_REUSEADDR, (
char*)
&one, sizeof(one)) < 0)
#endif
struct sockaddr_in add;
add.sin_family = AF_INET;
add.sin_port = htons(port_to_use);
add.sin_addr.s_addr = INADDR_ANY;
struct sockaddr *addr = ( struct sockaddr *) &add;
if (bind(
m_p->m_socket, addr,
sizeof(
struct sockaddr_in)))
if (listen(
m_p->m_socket, 3) < 0)
unsigned int tmpadd;
tmpadd = (unsigned) inet_addr("127.0.0.1");
if (tmpadd)
memcpy(&add.sin_addr.s_addr, &tmpadd, sizeof(struct in_addr));
else
m_p->m_fd[1] = socket(AF_INET, SOCK_STREAM, 0);
if (connect(
m_p->m_fd[1], addr,
sizeof(*addr)) < 0)
{
#ifdef WIN32
if (WSAGetLastError() != WSAEWOULDBLOCK)
#else
if (errno != EINPROGRESS)
#endif
}
struct sockaddr caddr;
#ifdef WIN32
int caddr_len = sizeof(caddr);
#else
socklen_t caddr_len = sizeof(caddr);
#endif
m_p->m_fd[0] = accept(
m_p->m_socket, &caddr, &caddr_len);
fd_set write_set;
FD_ZERO(&write_set);
FD_SET(
m_p->m_fd[1], &write_set);
int r = select(
m_p->m_fd[1]+1, 0, &write_set, 0, 0);
if (r != 1)
}
else
{
#ifndef WIN32
else
{
assert(
m_p->m_fd[0] >= 0);
assert(
m_p->m_fd[1] >= 0);
}
#endif
}
}