Timeout w connect?

1

Witam! Mam taki problem, korzystam z funkcji connect by sie połączyć z serwerem i potem z send i recv by wysłać żądanie (nie wiem jak to nazwać) i odczytać odpowiedz. Niestety dość długo czeka na odpowiedź i potrzebuje ustawić timeout na np. 1 sekunde, próbowałem już przez setsockopt ale nie działa.
W całości moja próba wyglądała tak:

int connectToServer(char *ip, int port, char *buffer)
{
    WSADATA wsaData;
	WORD version = MAKEWORD( 2, 0 );
	WSAStartup( version, &wsaData );
    int sockfd = socket(AF_INET, SOCK_STREAM, 0);
    struct sockaddr_in dest_addr;
    dest_addr.sin_family = AF_INET;
    dest_addr.sin_port = htons(port);
    dest_addr.sin_addr.s_addr = inet_addr(ip);
    memset(&(dest_addr.sin_zero), '\0', 8);

	struct timeval tv;

	tv.tv_sec = 1;
	tv.tv_usec = 0;
	if (setsockopt(sockfd,SOL_SOCKET,SO_SNDTIMEO,(char*)&tv,sizeof(tv)) < 0)
	{
		std::cout << "snd socket error!" << std::endl;
	}
	if (setsockopt(sockfd,SOL_SOCKET,SO_RCVTIMEO,(char*)&tv,sizeof(tv)) < 0)
	{
		std::cout << "rcv socket error!" << std::endl;
	}

	if(connect(sockfd, (struct sockaddr *)&dest_addr, sizeof(struct sockaddr)) != 0)
	{
		return -1;
		std::cout << "[StatusReciver::connectToServer("<< ip << ", " << port << ")] Failed at connect" << std::endl;
	}
	char buf[10];
	sprintf(buf, "%c%c%c%cinfo", 6, 0, 255, 255);
    send(sockfd, buf, 8, 0);
	return recv(sockfd, buffer, 1000, 0);// << std::endl;
}

Przy linkowaniu korzystam z wsock32.lib

Z góry dziękuje ;)

Pozdrawiam.

1

bump :/

1 użytkowników online, w tym zalogowanych: 0, gości: 1