Здравствуйте Flamer, Вы писали:
F>Вот, в общем, выдрал из одного из своих постов, дабы такая полезная весчь была на своем месте, а именно в форуме "Исходники". Признаюсь честно — функция писана не мной, но оценки можете ставить мне — за волю к победе и продвижения знания в массы
F>
F>F>// timeout задается в миллисекундах
F>int connectex(SOCKET s, const struct sockaddr *name,
F> int namelen, long timeout)
F>{
F> // As connect() but with timeout setting.
F> int rc = 0;
F> ULONG ulB;
F> struct timeval Time;
F> fd_set FdSet;
F> ulB = TRUE; // Set socket to non-blocking mode
F> ioctlsocket(s, FIONBIO, &ulB);
F> if (connect(s, name, sizeof(SOCKADDR)) == SOCKET_ERROR) {
F> if (WSAGetLastError() == WSAEWOULDBLOCK) {
F> // now wait for the specified time
F> FD_ZERO(&FdSet);
F> FD_SET(s, &FdSet);
F> Time.tv_sec = timeout / 1000L;
F> Time.tv_usec = (timeout % 1000) * 1000;
F> rc = select(0, NULL, &FdSet, NULL, &Time);
F> }
F> }
F> ulB = FALSE; // Restore socket to blocking mode
F> ioctlsocket(s, FIONBIO, &ulB);
F> return (rc > 0) ? 0 : SOCKET_ERROR;
F>}
F>
F>
F>
F>В общем, применять по назначению врача вместо обычного connect.
с этим я уже разобрался, мне надо чтобы сервер слушал n-ое время и не дождавшись ни одного подключения говорил, что произошла фигня, в принципе есть мысль попробовать listen->ioctlsocket->select->accept