TimeOut sur un socket

djosh Messages postés 1 Date d'inscription vendredi 10 octobre 2003 Statut Membre Dernière intervention 10 octobre 2003 - 10 oct. 2003 à 14:58
mirlaine Messages postés 32 Date d'inscription samedi 9 août 2003 Statut Membre Dernière intervention 24 août 2005 - 26 oct. 2003 à 04:08
Voici un bout de code des sources du logiciel VNC, la fonction connect(). Mon but est de réduire le temps de réponse (message:"failed to connect to server") si une IP n'est pas trouvée et pour l'instant je n'y arrive pas du tt ;-{ HELPPP!

void ClientConnection::Connect()
{
struct sockaddr_in thataddr;
int res;

m_sock = socket(PF_INET, SOCK_STREAM, 0);
if (m_sock == INVALID_SOCKET) throw WarningException(_T("Error creating socket"));
int one = 1;

// The host may be specified as a dotted address "a.b.c.d"
// Try that first
thataddr.sin_addr.s_addr = inet_addr(m_host);

// If it wasn't one of those, do gethostbyname
if (thataddr.sin_addr.s_addr == INADDR_NONE) {
LPHOSTENT lphost;
lphost = gethostbyname(m_host);

if (lphost == NULL) {
throw WarningException("Failed to get server address.\n\r"
"Did you type the host name correctly?");
};
thataddr.sin_addr.s_addr = ((LPIN_ADDR) lphost->h_addr)->s_addr;
};

thataddr.sin_family = AF_INET;
thataddr.sin_port = htons(m_port);
res = connect(m_sock, (LPSOCKADDR) &thataddr, sizeof(thataddr));
if (res == SOCKET_ERROR) throw WarningException("poste non connecté");
log.Print(0, _T("Connected to %s port %d\n"), m_host, m_port);

}
A voir également:

1 réponse

mirlaine Messages postés 32 Date d'inscription samedi 9 août 2003 Statut Membre Dernière intervention 24 août 2005
26 oct. 2003 à 04:08
lu ta 2 moyen soi tu met un timeout a ton socket soi tu met un timer ...

ca donn a pe pres ca :

jai fai avec les thread ds mon code mai ca doi etre adaptable a otre chose

--timer--
int WINAPI timer(LPVOID parameter)
{

int i=0;

for(i=0; i<TIMEOUT; i++)
{
Sleep(1000);
}

if(Threadsock == NULL)
{
closesocket(sock);
display_time_info();
printf("timeout connection lost\r\n");
}
else
{
printf("ok\r\n");
}

return 0;
}
---/code----

pi le timeout c tou con a definir
int timeout = 1000; //donne 1sec

if(setsockopt(sock,SOL_SOCKET,SO_SNDTIMEO,(char*)&timeout,sizeof(timeout))!=0)
{

printf("socket option error \r\n");

return -1;
}
------------
ya toujour dotre moyen mais le mien rest assez simple
a+
0
Rejoignez-nous