Bonjour,
j'ai une application en C dont je voudrais qu'elle initie une connexion à un serveur et qu'elle me rende la main ensuite; j'ai créé convenablement le socket et la connection à la machine se fait, mais j'ai du mal au moment de l'envoi du username et password avant lesquels je ne sais pas s'il faut lire quelques lignes de bienvenue et combien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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);
Comment faire par la suite pour détecter que le login et passwd ont été acceptés, puis pour qu'il me rende la main ?
Si quelqu'un a déjà fait des choses comme ça ou peut me donner des pistes, ça m'intéresse, merci,
David