2011-08-16 6 views
1

J'utilise des sockets BSD sur un WLAN. J'ai remarqué que l'adresse IP de mon ordinateur serveur change de temps en temps lorsque je me connecte. Le problème est que j'entre l'adresse IP dans mon code comme une chaîne littérale. Donc, chaque fois que cela change, je dois entrer dans le code et le changer. Comment puis-je changer le code afin qu'il utilise tout ce que l'ip est à la fois? C'est l'appel dans le code du serveurComment trouver des adresses IP avec des sockets BSD?

if ((status = getaddrinfo("192.168.2.2", port, &hints, &servinfo)) != 0) 

et le côté client est le même. J'ai essayé NULL pour l'adresse des deux côtés, mais le client ne se connectera pas et me donne juste une erreur "Connection refused".

Merci pour toute aide.

Répondre

2

Utilisez un nom de domaine qui peut être recherché dans votre fichier hosts ou dans DNS, plutôt qu'une adresse IP.

0

Que diriez-vous d'un paramètre de ligne de commande?

int main(inr argc, char* argv[]) { 
    const char* addr = "myfancyhost.domain.com"; /* default address */ 
    if (argc > 1) { 
     addr = argv[1]; /* explicit address */ 
    } 
    if ((status = getaddrinfo(addr, ... 
+0

Eh bien, je ne veux pas avoir à vérifier l'adresse IP chaque fois que je lance le programme. Je veux juste qu'il obtienne l'ip tout seul. – Sterling

+0

Je suppose que vous cherchiez DNS alors. –

0

Donnez votre serveur un nom, et utiliser gethostbyname pour trouver son adresse (et, en général, mettre le nom du serveur dans un fichier de configuration au lieu de coder en dur, bien que coder en dur une valeur par défaut si vous le pouvez » t trouver le fichier de configuration ne fait pas de mal).

+0

Cela peut être une question stupide, mais comment puis-je "donner un nom à mon serveur?" – Sterling

+0

@Sterling: habituellement en mettant une entrée pour cela dans votre DNS (mais c'est plus une chose serverfault ...) –

Questions connexes