Pas de reponse sur le port 23

Pas de reponse sur le port 23 - C - Programmation

Marsh Posté le 10-04-2006 à 15:29:32    

J'ai fait un code pour communiquer avec le port 23 et je n'ai aucune reponse pourqoi?

Code :
  1. #include<stdio.h>
  2. #include<unistd.h>
  3. #include<arpa/inet.h>
  4. #include<netdb.h>
  5. #include<netinet/in.h>
  6. #include<sys/types.h>
  7. #include<sys/socket.h>
  8. #include<termios.h>
  9. main(argc,argv)
  10. int argc;
  11. char** argv;
  12. {
  13.   int sock_com,nb_caract_lus;
  14.   struct sockaddr_in  adresse_distant;
  15.   char buffer[1024];
  16.   char* port="23";
  17.   struct termios term_init,term_com;
  18.   fd_set desc_term_com;
  19.   memset(&adresse_distant,0,sizeof( struct sockaddr_in));
  20.   if((adresse_distant.sin_addr.s_addr=inet_addr(argv[1]))==INADDR_NONE)
  21.     {
  22.     perror ("\nErreur sur l'adresse ip" );
  23.     exit(1);
  24.     }
  25. adresse_distant.sin_family=AF_INET;
  26. adresse_distant.sin_port=htons(atoi(port));
  27. if((sock_com=socket(PF_INET,SOCK_STREAM,0))<0)
  28.    perror("\nerreur sur socket" );
  29. printf("\nNumero de socket attribuee %d\n",sock_com);
  30. printf("\nDemande de connection sur distant" );
  31. if(connect(sock_com,(struct sockaddr*) &adresse_distant, sizeof (struct sockaddr_in))<0)
  32.    perror("\nerreur sur connect" );
  33. printf("\nconnexion reussie" );
  34. printf("\nResultat de l'initialistion de la structure sockaddr_in" );
  35. printf("\nadresse: en hexa %08X\ten decimal pointee %s\nNumero de port en Hexa %08X\ten decimal %d",ntohl(adresse_distant.sin_addr.s_addr),inet_ntoa(adresse_distant.sin_addr),ntohs(adresse_distant.sin_port),ntohs(adresse_distant.sin_port));
  36. printf("\nRecuperation des attributs de l'entree du terminal" );
  37. tcgetattr(STDIN_FILENO,&term_init);
  38. tcgetattr(STDIN_FILENO,&term_com);
  39. printf("\nPassage en mode brut de term_com" );
  40. cfmakeraw(&term_com);
  41. printf("\nApplication des changement de l'entree en mode brut" );
  42. tcsetattr(STDIN_FILENO,TCSANOW,&term_com);
  43. while(1)
  44.    {
  45.      FD_ZERO(&desc_term_com);
  46.      FD_SET(sock_com,&desc_term_com);
  47.      FD_SET(STDIN_FILENO,&desc_term_com);
  48.      if(select(sock_com+1,&desc_term_com,NULL,NULL,NULL)<0)
  49.        break;
  50.      if(FD_ISSET(sock_com,&desc_term_com))
  51.        {
  52. if( nb_caract_lus=read(sock_com,buffer,1024)<=0)
  53.   break;
  54. write(STDOUT_FILENO,buffer,nb_caract_lus);
  55.        }
  56.      if(FD_ISSET(STDIN_FILENO,&desc_term_com))
  57.        {
  58. if( nb_caract_lus=read(STDIN_FILENO,buffer,1024)<=0)
  59.   break;
  60. write(sock_com,buffer,nb_caract_lus);
  61.        }
  62.    }
  63. printf("\nSortie du while" );
  64. tcsetattr(STDIN_FILENO,TCSANOW,&term_init);
  65. printf("\nrestitution du terminal initial" );
  66. close(sock_com);
  67. printf("\nfermeture de la socket" );
  68. }
  69. "\nrestitution du terminal initial" );
  70. close(sock_com);
  71. printf("\nfermeture de la socket" );
  72. }


Reply

Marsh Posté le 10-04-2006 à 15:29:32   

Reply

Marsh Posté le 10-04-2006 à 15:42:24    

yartempion a écrit :

J'ai fait un code pour communiquer avec le port 23 et je n'ai aucune reponse pourqoi?

Code :
  1. char* port="23";



Je le sens mal...

Citation :

Code :
  1. adresse_distant.sin_port=htons(atoi(port));



C'est tordu... En principe, uin simple type short suffit :  

Code :
  1. short port = 23;
  2.    adresse_distant.sin_port=htons(port);


http://mapage.noos.fr/emdel/reseaux.htm


Message édité par Emmanuel Delahaye le 10-04-2006 à 15:43:21

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 10-04-2006 à 16:56:44    

Quelqu'un pourrai me dire comment on reactive le serveur telnet sous mandrake?
Je n'arrive plus a faire de telnet sur le 127.0.0.1 ou sur le 192.168.1.2.

Reply

Marsh Posté le 10-04-2006 à 17:02:53    

service telnet start ?

Reply

Marsh Posté le 10-04-2006 à 20:41:29    

Non ça ne marche pas.

Reply

Marsh Posté le 10-04-2006 à 20:47:40    

telnet est installé au moins ?

Reply

Marsh Posté le 10-04-2006 à 21:12:37    

Il l'etait mais je n'en suis plus tres sur.
Comment voir si il est toujours intalle.

Reply

Marsh Posté le 11-04-2006 à 01:18:25    

shell: rpmdrake

Reply

Marsh Posté le 11-04-2006 à 01:58:59    

quelqu'un peut il me dire pourquoi le port 23 ne repond pas?

Reply

Marsh Posté le 11-04-2006 à 02:00:08    

yartempion a écrit :

quelqu'un peut il me dire pourquoi le port 23 ne repond pas?


Ton firewall (iptables) l'autorise ?
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 11-04-2006 à 02:00:08   

Reply

Marsh Posté le 11-04-2006 à 02:11:01    

> Ton firewall (iptables) l'autorise ?
c'est en local
 
yartempion> essaye: ``chkconfig --list telnet`` et ``chkconfig --list telnetd``

Reply

Marsh Posté le 11-04-2006 à 02:30:50    

Oui j'arrive a faire un telnet sur le 127.0.0.1 donc c'est OK.
J'arrive a lire sur certain equipements mais j'ail'impression que je n'arrive pas a ecrire sur la socket.

Reply

Marsh Posté le 11-04-2006 à 14:18:43    

Enfin de compte je pense que je ne negocie pas correctement le protocole telnet quelqu'un aurait'il un source client telnet en c pour que je puisse voir comment ca marche. J'ai lu et relu le RFC854 mais ce n'est pas tres clair et je ne vois pas comment implementer la negociation des differntes options.

Reply

Sujets relatifs:

Leave a Replay

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