Fonction non bloquante sous telnet

Fonction non bloquante sous telnet - C - Programmation

Marsh Posté le 09-06-2004 à 17:46:23    

Salut,
Je travaille en ce moment sur un serveur telnet. Le problème c'est qu'il faut que je fasse une attente non bloquante.
Ce serveur fonctionne sous DOS.  
Pour l'instant voila le code:
 
 do {
        tcp_listen( s, port, 0L, 0, NULL, 0 );
 
        while ( ! sock_established( s )) {
            if ( tcp_tick( s ) == NULL ) goto retry;
            delay( 250 );
        }
 
        /* we are connected */
        t->teld_connected = 1;
        t->teld_iostate = IO_ST_INIT;
        sock_mode( s, TCP_MODE_NONAGLE );
        send_iac( t, TEL_WILL, OPT_ECHO );
        return( t );
 
retry:
        sock_abort( s );
    } while ( 1 );
 
 
J'ai essayé de faire un "if" sur sock_established(s) mais ca ne marche pas .
Je m'explique:
Je teste si la socket est établie puis je traite la suite.
Mais ca ne marche pas .
Existe t'il d'autres procédures ou d'autres fonction non-bloquante?
merci.
 
 

Reply

Marsh Posté le 09-06-2004 à 17:46:23   

Reply

Marsh Posté le 09-06-2004 à 19:45:16    

Pour les sockets, j'ai déjà fait comme ça :
 
    int opts;
    opts = fcntl (ta_socket, F_GETFL);
    if (opts < 0) return;
    opts = (opts | O_NONBLOCK);
    fcntl (ta_socket, F_SETFL, opts);
 
edit: J'avais pas fait gaffe que ça tourne sous DOS. Ca fonctionne sous linux ma méthode. Sous DOS je ne peux pas confirmer ;)


Message édité par Vinx le 10-06-2004 à 10:45:05
Reply

Marsh Posté le 10-06-2004 à 10:04:42    

Merci d'abord pour ta réponse,
Je ne connaissait pas du tout cette fonction avant, pourrais tu m'en dire un peu plus STP .
Genre le pointeur sur la structure,"this"? et "fd"?
merci  

Reply

Marsh Posté le 10-06-2004 à 10:45:59    

Autant pour moi ça vient du copier coller.
C'est en fait le descripteur de ta socket.
(Le code venait d'une classe...)

Reply

Marsh Posté le 10-06-2004 à 11:04:14    

Erreur de compil,
Il ne reconnait pas les cstes O_NONBLOCK et F_GETFL . Pourtant j'ai inclus <unistd.h> et <fcntl.h>.
Ca me parrais mal barré!!!

Reply

Marsh Posté le 10-06-2004 à 11:40:27    

sinon ya pas des fonctions dans tcp.h? qui pourrait faire la même chose?

Reply

Marsh Posté le 10-06-2004 à 12:24:52    

Sans doute que ça n'existe que sous linux.
=> http://joshua.raleigh.nc.us/docs/l [...] 69.html#15
 
#define O_NONBLOCK   04000
en ligne 15
 
Vérifie si tu c'est défini dans ton fichier inclus ;)

Reply

Marsh Posté le 10-06-2004 à 13:35:15    

ya pas !!!
C'est pas grave, je pense avoir une notre solution.
Pendant l'attente j'execute mes autres fontions. (a l'intérieur du while).
merci pour tes renseignements.
tcho

Reply

Marsh Posté le 10-06-2004 à 13:39:19    

Quand tu dis sous DOS, c'est vraiment sous dos ou c'est une session CMD sous windows ?
parcequ'à ce moment là ça doit être ioctlsocket() pour rendre la socket non bloquante.

Reply

Marsh Posté le 10-06-2004 à 13:57:54    

non c'est vraiment sous dos,  
En fait je télécharge mon executable sur une cible.(proc 486sx )
En plus de la fonction telnet, le programme gère d'autres fonctions.
 
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed