Bonjour s'il vous plait est ce qu'il est possible l'envoi et la réception des données à travers internet (en utilisant les "sockets" en c)
si oui est ce que vous pouvez me diriger vers des topics sinon des codes sources ca sera trop bien
Bonjour s'il vous plait est ce qu'il est possible l'envoi et la réception des données à travers internet (en utilisant les "sockets" en c)
si oui est ce que vous pouvez me diriger vers des topics sinon des codes sources ca sera trop bien
- winsock
- sys/socket.h
salut , j'ai deja devant moi un client server qui marche bien sur le localhost mais question plus précisament comment faire pour que l'envoie et la recéption soit a travers internet
Si ton application client-serveur est écrite proprement, alors il te suffit simplement de changer les adresses IP des destinataires, de chaque côté.
Par contre, il faudra d'une part vérifier que tes machines sont bien accessibles depuis l'extérieur (firewalls, boxes en mode routeur, etc) et le cas échéant, faire ouvrir certains ports. Il faudra également et d'autre part vérifier que ton code est bien écrit, parce qu'il est probable qu'il contienne un certain nombre de raccourcis qui ne fonctionnent qu'en interne. Ça, on ne pourra en être certain qu'en examinant ton programme.
merci voila mes codes sources
client :
serveur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68 #include <stdio.h> #include <conio.h> #include <windows.h> #include <winsock2.h> #include <time.h> #pragma comment (lib, "ws2_32.lib") void timer (int); int main (int argc, char *argv []) { WSADATA wsa; SOCKET sck,new_socket; int cnt; struct sockaddr_in ip_info,client; int c; char msg[100]; printf ("Instalation"); if (WSAStartup (MAKEWORD (2,2), &wsa) == INVALID_SOCKET) { printf ("WSA erreur\n"); return EXIT_FAILURE; } else { if ((sck = socket (AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET) { printf ("Socket erreur\n"); return EXIT_FAILURE; } else { ip_info.sin_addr.s_addr = inet_addr("127.0.0.1"); ip_info.sin_family = AF_INET; ip_info.sin_port = htons (8888); } } if (connect (sck, (struct sockaddr *)&ip_info, sizeof (ip_info)) < 0) { printf ("\nNon Connecter!\n"); return EXIT_FAILURE; } else { printf ("\nSession commance\n"); } while(1) { printf ("Entrer votre message : "); gets (msg); send(sck , msg ,100 ,0); if(strcmp(msg,"exit") == 0) { break; } } system("PAUSE"); return 0; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82 #include<io.h> #include<stdio.h> #include <windows.h> #include <winsock2.h> #pragma comment(lib,"ws2_32.lib") //Winsock Library int main(int argc , char *argv[]) { WSADATA wsa ; SOCKET s , new_socket; struct sockaddr_in server , client; int c, cnt; char msg [100]; printf("\nInitialisation de Winsock...\n"); if (WSAStartup(MAKEWORD(2,2),&wsa) != 0) { printf("Echec d'initialisation de winsock. Error Code : %d\n",WSAGetLastError()); return EXIT_FAILURE; } printf("Winsock est bien initiliser.\n"); if((s = socket(AF_INET , SOCK_STREAM , 0 )) == INVALID_SOCKET) { printf("Echec de la creation du socket : %d\n" , WSAGetLastError()); return EXIT_FAILURE; } printf("Socket bien creer.\n"); server.sin_family = AF_INET; server.sin_addr.s_addr = htonl(INADDR_ANY); server.sin_port = htons(8888); if(bind(s ,(struct sockaddr *)&server , sizeof(server)) == SOCKET_ERROR) { printf("Echec du Bind erreur code : %d\n" , WSAGetLastError()); return EXIT_FAILURE; } puts("Bind reussie"); listen(s , 3); puts("Attente d'une conexion..."); c = sizeof(struct sockaddr_in); new_socket = accept(s , (struct sockaddr *)&client, &c); if (new_socket == INVALID_SOCKET) { printf("Echec de l'acceptation erreur code : %d\n" , WSAGetLastError()); return EXIT_FAILURE; } puts("Connection est accepter\n"); int rec_size; while(1) { rec_size = recv(new_socket,msg,100,0); msg[rec_size] = '\0'; if(strcmp(msg,"exit") == 0 || rec_size < 0) { printf("Echec de la reception ou bien le client a fermer le programme!\n"); break; } else { printf ("Message from client : %s\n",msg); } } closesocket(s); WSACleanup(); return 0; }
concernant le code que tu as fournis, en le survolant rapidement, je ne pense pas qu'il y ait de soucis .
Pour naviguer "à travers" internet, il faut que tu comprenne bien comment ça fonctionne.Un ordinateur possède une adresse ip local (192.168.1.xxx) qui est relié à une box qui possède une adresse ip internet (86.10.25.xxx, ou dans le genre). pour pouvoir "traverser" internet et atteindre ton serveur, il faut que tu te connecte sur l’adresse de la box, qui possède le port que tu souhaite ouvert et une redirection vers le PC qui héberge le serveur.
En gros:
ton client envois la requête de connexion à la box sur le port 8888, la box redirige la demande de connexion sur le serveur.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager