Faire communiquer client/serveur à distance
Résolu
Kina8888
Messages postés
5
Statut
Membre
-
yg_be Messages postés 24281 Statut Contributeur -
yg_be Messages postés 24281 Statut Contributeur -
Bonjour,
J'aimerais faire communiquer un client et un serveur qui ne sont pas sur le même réseau en utilisant les sockets en C. Mon problème est que quand je lance les deux programmes, le client devrait se connecter au serveur, mais il ne se passe rien. Je précise que j'ai mis l'adresse ip publique de l'ordinateur sur lequel le serveur fonctionne dans la structure de connexion du client, et que sur le serveur, j'ai mis INADDR_ANY. Je précise aussi qu'en local, ces deux programmes marchent très bien. Donc j'aimerais savoir quelle est l'origine du problème, et comment y remédier. Merci de bien vouloir me répondre ;)
J'aimerais faire communiquer un client et un serveur qui ne sont pas sur le même réseau en utilisant les sockets en C. Mon problème est que quand je lance les deux programmes, le client devrait se connecter au serveur, mais il ne se passe rien. Je précise que j'ai mis l'adresse ip publique de l'ordinateur sur lequel le serveur fonctionne dans la structure de connexion du client, et que sur le serveur, j'ai mis INADDR_ANY. Je précise aussi qu'en local, ces deux programmes marchent très bien. Donc j'aimerais savoir quelle est l'origine du problème, et comment y remédier. Merci de bien vouloir me répondre ;)
A voir également:
- Comment se connecter à un serveur à distance
- Se connecter à gmail sur téléphone - Guide
- Comment connecter chromecast à la télé - Guide
- Allumer pc à distance - Guide
- Se connecter à ma boite hotmail - Guide
- Facebook se connecter à un autre compte - Guide
1 réponse
bonjour, moi je commencerais par faire un ping du serveur à partir du client.
ensuite, si le ping fonctionne, je me demanderais si le réseau entre le client et le serveur laisse passer la communication sur la porte TCP que tu as choisi d'utiliser.
ensuite, je rassemblerais le maximum d'information concrètes, et je les partagerais sur ce forum: tout ce que tu sais et que tu ne nous a pas communiqué.
ensuite, si le ping fonctionne, je me demanderais si le réseau entre le client et le serveur laisse passer la communication sur la porte TCP que tu as choisi d'utiliser.
ensuite, je rassemblerais le maximum d'information concrètes, et je les partagerais sur ce forum: tout ce que tu sais et que tu ne nous a pas communiqué.
Client :
if ((sock = socket(AF_INET , SOCK_STREAM , 0 )) == INVALID_SOCKET)
{
return 1;
}
server.sin_addr.s_addr = inet_addr("monip");
server.sin_family = AF_INET;
server.sin_port = htons( 8888 );
if (connect(sock , (struct sockaddr *)&server , sizeof(server)) < 0)
{
return 1;
}
Serveur :
sock = socket(AF_INET, SOCK_STREAM, 0);
sin.sin_addr.s_addr = INADDR_ANY;
sin.sin_family = AF_INET;
sin.sin_port = htons(8888);
bind(sock, (SOCKADDR *)&sin, sizeof(sin));
listen(sock, 0);
puts("En attente d'une connexion...");
sinsize = sizeof(csin);
if ((csock = accept(sock, (SOCKADDR *)&csin, &sinsize)) != INVALID_SOCKET)
{
puts("Debut de l'échanche");
}
le serveur a une ip publique
il y a une box
.
peux-tu en donner plus:
- quel OS sur le serveur et le client?
- la communication entre le client et le serveur se fait-elle via internet?
- le serveur est-il connecté à internet via une box?
- le serveur a-t-il aussi une adresse privée? statique, dynamique?
- Les deux sont sur Windows 10
- La communication des programmes se fait effectivement via internet
- Le serveur est connecté à internet par une box en wifi
- Le serveur possède une adresse privée et dynamique
En espérant que ça puisse t'aider
il faut alors configurer la box pour rediriger la porte 8888 vers l'adresse ip privée du serveur. compliqué si cette adresse est dynamique.