[RoLUG] timeout dei socket in c

Master^Shadow rolug@lists.linux.it
Sat, 12 Apr 2003 17:55:09 +0200


Ciao,
ho un piccolo problemino sulla gestione dei socket in c.
devo leggere un banner da un servizio su porta X ma ci mette una vita
credo sia un problema di timeout o simile ma caspita :-)

if (connect(s,(struct sockaddr *)&sin,sizeof(struct sockaddr)) !=3D -1)
{	    	FILE *f;
	    	f =3D fdopen(s, "r");
	    	setbuf(f, NULL);
		while (!feof(f) && fgets(buffer2, sizeof(buffer2), f) !=3D NULL)
			printf(buffer2);
		fclose(f);
}
praticamente legge e poi si blocca per un minuto, due...
non c'=E8 un modo per risolvere questo problema?

$ time dast2 localhost 22 23
Scanning host=3Dlocalhost ports 22-23
waiting...

Port: 22 (ssh) (tcp)
Banner: SSH-1.99-OpenSSH_3.5p1

Done
Scanning Terminated

real    1m59.999s <- quando si dice la puntualit=E0 :-)
user    0m0.000s
sys     0m0.010s

=2D-=20
Master^Shadow | Hx