1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
|
sin.sin_addr = *(IN_ADDR *) hostinfo->h_addr;
sin.sin_port = htons(PORT); // PORT=23 pour telnet.
sin.sin_family = AF_INET; // pour l'instant, AF_INET qui est le type vaut 2
sin.sin_addr.s_addr=addrl; // sin est une struct sockaddr_in,
hh=gethostbyaddr(&addrl, sizeof(addrl), 2);
if(hh==NULL) {
// struct hostent *gethostbyaddr(const void *addr, socklen_t len, int type);
perror("un: gethostbyaddr()");
}
else{ // on ne passe pas ici, donc hh==NULL, donc gethostbyaddr n'a pas bien marché
// gethostbyaddr a créé une struct hostent qui s'appelle hh et qui provoque une
host = hh->h_name; // segmentation fault ci après...
printf("host scruté=%s (hh->h_name)\n", host);
printf("gethostbyaddr() Ok\n\n");
}
if (hostinfo == NULL){ // ça ne passe pas ici, donc hostinfo est Ok. (le gethostbyname)
fprintf (stderr, " Unknown host %s.\n", buffer);
exit(EXIT_FAILURE);
}
if(connect(sock,(SOCKADDR *) &sin, sizeof(SOCKADDR)) == SOCKET_ERROR)
{
perror("un: connect()");
exit(errno);
}
else printf("un: connect() Ok\n\n");
printf("un: try to log in, now :\n");
//
printf("envoi de ->%s%s", "guest", CRLF);
sprintf(command, "%s%s", "guest", CRLF);
write_server(sock, command);
read_server(sock, line);
puts(line);
//
printf("envoi de ->%s%s", "guest", CRLF);
sprintf(command, "%s%s", "guest", CRLF);
write_server(sock, command);
read_server(sock, line);
puts(line); |
Partager