unsigned long arg = 1;
ioctlsocket(sockfd, FIONBIO, &arg);
в Linux:
int arg = fcntl(sockfd, F_GETFL, NULL);
arg |= O_NONBLOCK;
fcntl(sockfd, F_SETFL, arg);
или универсальная функция:
void setSockNonblock(int sockfd)
{
#ifdef WIN32
unsigned long arg = 1;
ioctlsocket(sockfd, FIONBIO, &arg);
#else
int arg = fcntl(sockfd, F_GETFL, NULL);
arg |= O_NONBLOCK;
fcntl(sockfd, F_SETFL, arg);
#endif
}