Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1452 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Socket Adresse IP

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Socket Adresse IP

n°1365760
Atlanted
Posté le 13-05-2006 à 23:00:24  profilanswer
 

Bonjour,
 
J'aimerais savoir comment modifier mon source pour que l'utilisateur spécifie l'adresse IP et le Port durant l'execution du programme plutot que de les saisir directement dans la source.
 
Merci.  :p  
 

Code :
  1. #include "port_serie.h"
  2. //#pragma comment(lib, "wsock32.lib" )
  3. int sock(SOCKET *pt_descripteur)
  4. {
  5. WSADATA wsaData; // Initialisation d'une variable WSADATA
  6. int res;
  7. struct sockaddr_in sock;
  8. char *adresse = "192.168.0.1"; // Adresse du pc distant
  9. res = WSAStartup(MAKEWORD(1,0), &wsaData);
  10. *pt_descripteur = socket(AF_INET, SOCK_STREAM,IPPROTO_TCP);
  11. if (*pt_descripteur != SOCKET_ERROR)
  12. {
  13.  sock.sin_family = AF_INET;
  14.  sock.sin_port = htons(1024);  // Définition de port
  15.  sock.sin_addr.s_addr = inet_addr(adresse);
  16. }
  17. if(connect(*pt_descripteur, (struct sockaddr*) (&sock), sizeof(sock)) == SOCKET_ERROR)
  18. errors();
  19. return 0;
  20. }
  21. int envoi(char *pt_buf,SOCKET descripteur)
  22. {
  23. if(send(descripteur, pt_buf, strlen(pt_buf), 0) == SOCKET_ERROR)
  24. errors();
  25. return 0;
  26. }
  27. int fermeture(SOCKET *pt_descripteur)
  28. {
  29. closesocket(*pt_descripteur);
  30. WSACleanup();
  31. return 1;
  32. }


Message édité par Atlanted le 14-05-2006 à 11:02:54
mood
Publicité
Posté le 13-05-2006 à 23:00:24  profilanswer
 

n°1365823
moi23372
Posté le 14-05-2006 à 10:48:00  profilanswer
 

c'est du français ça... soit un peu plus explicite. Puis c'est pas "le source" mais "la source"...

n°1365839
breizhbugs
Posté le 14-05-2006 à 11:34:55  profilanswer
 

Salut,

Code :
  1. int sock(SOCKET *pt_descripteur, char *adresse)
  2. ...
  3. /*
  4.     char *adresse = "192.168.0.1"; // Adresse du pc distant
  5. */
  6. ...


?

n°1365847
Atlanted
Posté le 14-05-2006 à 11:51:52  profilanswer
 

Ok merci j'ai réussi. Parcontre pour le port ça a l'air différent car sur le même principe ça ne fonctionne pas.

Message cité 1 fois
Message édité par Atlanted le 14-05-2006 à 12:06:16
n°1365853
Sve@r
Posté le 14-05-2006 à 12:17:34  profilanswer
 

Atlanted a écrit :

Ok merci j'ai réussi. Parcontre pour le port ça a l'air différent car sur le même principe ça ne fonctionne pas.


 

Code :
  1. #include "port_serie.h"
  2. //#pragma comment(lib, "wsock32.lib" )
  3. int sock(SOCKET *pt_descripteur, char *adresse, int port)
  4. {
  5. WSADATA wsaData; // Initialisation d'une variable WSADATA
  6. int res;
  7. struct sockaddr_in sock;
  8. // char *adresse = "192.168.0.1"; // Adresse du pc distant
  9. res = WSAStartup(MAKEWORD(1,0), &wsaData);
  10. *pt_descripteur = socket(AF_INET, SOCK_STREAM,IPPROTO_TCP);
  11. if (*pt_descripteur != SOCKET_ERROR)
  12. {
  13.  sock.sin_family = AF_INET;
  14.  sock.sin_port = htons(port);  // Définition de port
  15.  sock.sin_addr.s_addr = inet_addr(adresse);
  16. }
  17. if(connect(*pt_descripteur, (struct sockaddr*) (&sock), sizeof(sock)) == SOCKET_ERROR)
  18. errors();
  19. return 0;
  20. }


 
Tu appelles la fonction "sock" en lui passant en 2° paramètre la chaîne "x.y.z.t" et en 3° le n° de port
 
Sinon, petite remarque, dans ton 1er code, tu as écrit ceci

Atlanted a écrit :

Code :
  1. char *adresse = "192.168.0.1";



 
Je pense qu'il vaut mieux écrire ceci

Code :
  1. char adresse[] = "192.168.0.1";


Dans le premier cas, tu définis un pointeur pointant vers une zone statique de ta mémoire probablement invariable. Tu ne peux pas modifier le contenu de "*adresse" (si jamais t'en avais envie).
Dans le 2° cas, tu définis un tableau d'octets suffisemment grand pour contenir ta chaîne et tu peux le modifier ensuite.
Dans tous les cas, le fonctionnement de ta fonction reste le même...

Message cité 1 fois
Message édité par Sve@r le 14-05-2006 à 12:33:21

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1365856
tholdan
Posté le 14-05-2006 à 12:25:00  profilanswer
 

moi23372 a écrit :

c'est du français ça... soit un peu plus explicite. Puis c'est pas "le source" mais "la source"...


Perdu.

n°1365859
Atlanted
Posté le 14-05-2006 à 12:27:58  profilanswer
 

Ok merci, je vais essayer d'intégrer ça dans ma MFC maintenant.

n°1371056
Emmanuel D​elahaye
C is a sharp tool
Posté le 20-05-2006 à 13:45:40  profilanswer
 

Sve@r a écrit :

Je pense qu'il vaut mieux écrire ceci

Code :
  1. char adresse[] = "192.168.0.1";


tu définis un tableau d'octets suffisemment grand pour contenir ta chaîne et tu peux le modifier ensuite.
Dans tous les cas, le fonctionnement de ta fonction reste le même...


Modifier, genre  

Code :
  1. char adresse[] = "192.168.0.1";
  2. <...>
  3. strcpy(adresse, "192.168.0.10" ); /* BOUM */


Ou alors comme ça :  

Code :
  1. char adresse[sizeof "255.255.255.255"] = "192.168.0.1";
  2. <...>
  3. strcpy(adresse, "192.168.0.254" );


Là, c'est OK.


Message édité par Emmanuel Delahaye le 20-05-2006 à 13:46:51

---------------
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/
n°1371060
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 20-05-2006 à 13:57:25  profilanswer
 

moi23372 a écrit :

c'est du français ça... soit un peu plus explicite. Puis c'est pas "le source" mais "la source"...


perdu ! le programme d'un logiciel se nomme LE source
 
[:benou_grilled]

Message cité 1 fois
Message édité par Harkonnen le 20-05-2006 à 13:57:54

---------------
J'ai un string dans l'array (Paris Hilton)
n°1371075
Emmanuel D​elahaye
C is a sharp tool
Posté le 20-05-2006 à 14:20:44  profilanswer
 

Harkonnen a écrit :

perdu ! le programme d'un logiciel se nomme LE source


"Le code source" qui est devenu par simplification (abusive, AMA) "le source".


Message édité par Emmanuel Delahaye le 20-05-2006 à 14:21:12

---------------
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/

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Socket Adresse IP

 

Sujets relatifs
Comment avoir une adresse mail specialprobléme : passage de l'adresse d'une matrice
Mailing list + gestion contacts (adresse postale...)Socket, envoyer autre chose que du texte?
Socket asynchroneTorque : problème de socket réutilisée
Upload 1 fichier,seulement son nom et pas toute l'adresse[perl embed] Probleme socket
programmation socket. fonction accept() retourne 0[C/Socket]Programmer un proxy
Plus de sujets relatifs à : Socket Adresse IP


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR