IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Réseau C Discussion :

Envoi et réception des données


Sujet :

Réseau C

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Mai 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Envoi et réception des données
    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

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 630
    Points : 10 556
    Points
    10 556
    Par défaut
    • winsock
    • sys/socket.h

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Mai 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    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

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 370
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 370
    Points : 23 625
    Points
    23 625
    Par défaut
    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.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Mai 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    merci voila mes codes sources

    client :

    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;
    }
    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
    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;
    }

  6. #6
    Membre émérite
    Avatar de skeud
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 1 091
    Points : 2 724
    Points
    2 724
    Billets dans le blog
    1
    Par défaut
    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.
    Pas de solution, pas de probleme

    Une réponse utile (ou +1) ->
    Une réponse inutile ou pas d'accord -> et expliquer pourquoi
    Une réponse à votre question


Discussions similaires

  1. envoi et réception des données via serial port
    Par azert2010 dans le forum C#
    Réponses: 2
    Dernier message: 09/05/2011, 23h53
  2. [RCP] Envoi et réception des données entre view et window
    Par chiraz86 dans le forum Eclipse Platform
    Réponses: 0
    Dernier message: 25/03/2010, 20h01
  3. Envoi et réception de données : Communication Temps Réel
    Par mehdi_862000 dans le forum VC++ .NET
    Réponses: 8
    Dernier message: 26/05/2008, 14h14
  4. Réception des données sur un autre serveur
    Par u115rcu dans le forum Langage
    Réponses: 5
    Dernier message: 20/01/2007, 14h20
  5. tutoriel de l'envoi et réception des emails
    Par ouadie99 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 01/12/2006, 23h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo