[C Windows] Afficher l'IP ou l'hostname de la machine

Afficher l'IP ou l'hostname de la machine [C Windows] - C - Programmation

Marsh Posté le 28-07-2003 à 16:53:07    

Désolé de poster mes questionnettes de newbie, mais MSDN n'est pas des plus simples à naviguer (y a mieux ??).
 
En fait je cherche à afficher l'ip de la machine (ou autre, c'est juste pour identifier) qui exécute le programme C que j'écris.
 
Maintenant que j'y pense, c'est peut-être pas du C Windows, ma question.


---------------
Le site de ma maman
Reply

Marsh Posté le 28-07-2003 à 16:53:07   

Reply

Marsh Posté le 28-07-2003 à 16:57:27    

Pour le hostname :
gethostbyname() =>
http://msdn.microsoft.com/library/ [...] name_2.asp
 
Pour l'IP :
gethostbyaddr() =>
http://msdn.microsoft.com/library/ [...] addr_2.asp


Message édité par *syl* le 28-07-2003 à 16:57:47
Reply

Marsh Posté le 28-07-2003 à 17:05:49    

Pff... Merci beaucoup *Syl*.
 
Je suis parti pour faire chier, je le sens. Que me conseillez-vous comme ressource (bouquin ou site web, histoire que je sois moins nul) ?


---------------
Le site de ma maman
Reply

Marsh Posté le 28-07-2003 à 17:07:50    

Va déjà lire ce nouveau topic sur le C++:
http://forum.hardware.fr/forum2.ph [...] subcat=385
 
:)
 
Edit : trompé de lien


Message édité par *syl* le 28-07-2003 à 17:09:03
Reply

Marsh Posté le 29-07-2003 à 11:34:19    

Bon, à l'aide !
 
Je suis avec mon copain Visual C++ 6, j'ai écrit un programme qui affiche un bête frame. J'essaie d'imprimer l'adresse IP de la machine.
 
Et là c'est merveilleux. A mon code qui compile j'ajoute :

Code :
  1. #include <winsock2.h>


 
Et je mange 58 error(s), 11 warning(s). La première est :

error C2011: 'fd_set' : 'struct' type redefinition


---------------
Le site de ma maman
Reply

Marsh Posté le 29-07-2003 à 11:39:49    

Cherrytree a écrit :

Bon, à l'aide !
 
Je suis avec mon copain Visual C++ 6, j'ai écrit un programme qui affiche un bête frame. J'essaie d'imprimer l'adresse IP de la machine.
 
Et là c'est merveilleux. A mon code qui compile j'ajoute :

Code :
  1. #include <winsock2.h>


 
Et je mange 58 error(s), 11 warning(s). La première est :

error C2011: 'fd_set' : 'struct' type redefinition




 
C'est peut  être que le .h dans lequel tu inclues "winsock2.h" est inclu plusieurs fois.
quand tu écris un header, mets toujours :

Code :
  1. // Au tout début du fichier (avant les includes)
  2. #ifndef _NomDeTonHeader_h_
  3. #define _NomDeTonHeader_h_
  4. ...
  5. // A la toute fin de ton fichier
  6. #endif

Reply

Marsh Posté le 29-07-2003 à 11:46:26    

Je code à la sauvage uniquement dans un .c pour l'instant. Par contre j'inclus windows.h déjà. Une piste ?


---------------
Le site de ma maman
Reply

Marsh Posté le 29-07-2003 à 11:49:11    

Merci Gringo ! C'était dans windows.h. Mon header est déjà pris en compte.
EDIT: du coup j'ai viré mon import de winsock2.h


Message édité par Cherrytree le 29-07-2003 à 11:50:06

---------------
Le site de ma maman
Reply

Marsh Posté le 29-07-2003 à 12:07:44    

Cherrytree a écrit :

Je code à la sauvage uniquement dans un .c pour l'instant. Par contre j'inclus windows.h déjà. Une piste ?


 
Commence pas comme ça. C'est dès le départ qu'il faut s'habituer à séparer les header (.h) des implémentations (.c ou .cpp)

Reply

Marsh Posté le 29-07-2003 à 13:11:06    

Je voudrais bien. J'ai juste jamais compris ce qu'on mettait dans un header.


---------------
Le site de ma maman
Reply

Marsh Posté le 29-07-2003 à 13:11:06   

Reply

Marsh Posté le 29-07-2003 à 13:18:42    

dans les header tu mets les prototypes de tes methodes/fonctions ainsi que la declaration de tes variables et dans les .c/.cpp tu mets les definitions de tes methodes/fonctions. [:sinclaire]
exemple :  
Register.h
-----------

Code :
  1. class CRegister 
  2. {
  3. public:
  4. CString ReadString(LPCTSTR);
  5. bool WriteString(LPCTSTR, LPCWSTR);
  6. bool closeHKEY(HKEY);
  7. CRegister();
  8. virtual ~CRegister();
  9. };


 
Register.cpp
------------

Code :
  1. #include "stdafx.h"
  2. #include "Register.h"
  3. #ifdef _DEBUG
  4. #undef THIS_FILE
  5. static char THIS_FILE[]=__FILE__;
  6. #define new DEBUG_NEW
  7. #endif
  8. CRegister::CRegister()
  9. {
  10. }
  11. CRegister::~CRegister()
  12. {
  13. }
  14. bool CRegister::WriteString(LPCTSTR value, LPCWSTR name)
  15. {
  16. //traitements
  17. }
  18. bool CRegister::closeHKEY(HKEY m_hkey)
  19. {
  20. //traitements
  21. }
  22. CString CRegister::ReadString(LPCTSTR key)
  23. {
  24. //traitements
  25. }


Message édité par polo021 le 29-07-2003 à 13:20:54
Reply

Marsh Posté le 29-07-2003 à 13:25:57    

Mais si je déclare une classe par exemple. ça me choque de mettre ça dans un .h !
 
EDIT: ton exemple montre bien. Je reste choqué par la manière de faire.
 
Promis je vais faire des efforts.


Message édité par Cherrytree le 29-07-2003 à 13:26:58

---------------
Le site de ma maman
Reply

Marsh Posté le 29-07-2003 à 13:56:37    

Le truc est que le header peut être importé ailleurs dans le projet, afin d'en avoir toutes les déclarations (de la même manière que tu fais un import de windows.h ou winsock2.h, lesquels, tu l'auras vu, ne contiennent également que des déclarations et prototypes de classes).
 
Les définitions restent dans les .c et tout cela est résolu à l'édition des liens.  Dans le cas d'un import de winsock2.h, l'édition des liens fera (pas forcément automatiquement) appel à winsock2.lib qui contient les définitions des fonctions avec tout le code.
 
(je dis ça dans l'idée que tu débutes en C, en fait j'en sais rien :D)

Reply

Marsh Posté le 29-07-2003 à 14:14:57    

Cherrytree a écrit :

Mais si je déclare une classe par exemple. ça me choque de mettre ça dans un .h !
 
EDIT: ton exemple montre bien. Je reste choqué par la manière de faire.
 
Promis je vais faire des efforts.


 
Le concept de séparer les déclaration et l'implémentation, c'est interressant.
Et les commentaires, tu les mets dans le .h en priorité. en principe, juste en lisant le header d'une classe, tu doit pouvoir savoir ce qu'elle fait et à quoi elle sert.

Reply

Marsh Posté le 29-07-2003 à 16:58:24    

OK, ça me va.


---------------
Le site de ma maman
Reply

Sujets relatifs:

Leave a Replay

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