Comment donner à un client une adresse ip spécifique en C
Je suis en train de mettre en œuvre un simple client et le serveur en C et je ne peux pas trouver en ligne un exemple comment définir une adresse IP spécifique pour le client. C'est ce que j'ai obtenu jusqu'à présent:
sockfd = socket(PF_INET, SOCK_STREAM, 0);
if (sockfd == -1)
{
<some code to handle error>
}
address.sin_family = AF_INET;
address.sin_addr.s_addr = inet_addr(<addressOfTheServer>);
address.sin_port = htons(<portToConnectToServer>);
len = sizeof(address);
int result = connect(sockfd, (struct sockaddr *)&address, len);
Sur le côté serveur-je vérifier l'Adresse IP du client et j'ai toujours 127.0.0.1
Je veux changer quelque chose de différent.
Utilisation
Comment êtes-vous de vérifier que le client de l'adresse?
char *ip = inet_ntoa(client_address.sin_addr); printf("Adresse Ip -> %s\n", pi);
Vous voyez 127.0.0.1 parce que vous utilisez votre client et serveur sur la même machine. L'adresse IP de votre ordinateur est affecté par le routeur auquel vous êtes connecté. Pourquoi voulez-vous une adresse IP différente?
Je veux tester les threads, de sorte que chaque client se connecte quand un thread est créé, donc j'ai besoin de clients avec des adresses IP différentes pour voir ce qui se passe
bind()
avant connect()
pour définir l'adresse locale et/ou le port de la prise de courant. Mais si le client et le serveur sont sur des machines différentes, l'adresse du client ne peut jamais être 127.0.0.1.Comment êtes-vous de vérifier que le client de l'adresse?
char *ip = inet_ntoa(client_address.sin_addr); printf("Adresse Ip -> %s\n", pi);
Vous voyez 127.0.0.1 parce que vous utilisez votre client et serveur sur la même machine. L'adresse IP de votre ordinateur est affecté par le routeur auquel vous êtes connecté. Pourquoi voulez-vous une adresse IP différente?
Je veux tester les threads, de sorte que chaque client se connecte quand un thread est créé, donc j'ai besoin de clients avec des adresses IP différentes pour voir ce qui se passe
OriginalL'auteur Alex | 2013-03-28
Vous devez vous connecter pour publier un commentaire.
Si vous voulez que votre client pour vous connecter à l'aide d'une interface réseau spécifique (par exemple, parce que vous avez plusieurs cartes réseau), alors vous devez appeler
bind(2)
de l'interface de l'adresse IP avant deconnect
ing. Par exemple, si vous avez deux interfaces réseau avec des adresses IP 192.168.1.100 et 10.101.151.100, puis de vous connecter en utilisant l'adresse 192.168.1.100 vous pourriez faire ceci:OriginalL'auteur Adam Rosenfield
OK, donc j'ai mis la solution en collaboration avec l'obtention de l'adresse ip de l'ordinateur ainsi:
J'ai l'exécuter sur mon debian linux embarqué bras ts-7500 seul ordinateur de bord.
OriginalL'auteur jleslie48