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 :

client sous windows et server sous linux communication par socket


Sujet :

Réseau C

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 47
    Points : 16
    Points
    16
    Par défaut client sous windows et server sous linux communication par socket
    Bonjour

    pour tester mon serveur qui est sous linux j ai utiliser un client sous linux qui marche très bien, mais quand j ai modifié le programme client pour qu il marche sous windows et bien sûr il envoie une socket au serveur linux ça marche pas il me donne "Erreur d'écriture dans la socketprim!" merci de me dire ou est l'erreur.
    voila le client.c (linux):

    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
    #include <winsock2.h>
    #include <string.h>
    #include <unistd.h>
    #include <stdio.h>
    #include <fcntl.h>
    #include <time.h>
    #include <errno.h>
    #include <string.h>
    #include <stdlib.h>
     
    //#pragma comment(lib, "ws2_32.lib")
     
    #define PORT 2343
     
    void error(const char *msg)
    {
        perror(msg);
        exit(0);
    }
     
     
    int doconnect(struct sockaddr_in adresse)
    {
        //int socketprim;
    	SOCKET  socketprim;
        int longueurstruct;
    	 int connectionserveur;
        longueurstruct = sizeof (struct sockaddr_in);
    	socketprim = socket (AF_INET, SOCK_STREAM, 0);
     
        if (socketprim == -1)
        perror ("creation socket sur le client");
    	if (connect (socketprim, (struct sockaddr *) &adresse, longueurstruct) == -1)
        perror ("liaison (par connect) du client");
     
        return socketprim;
    }
     
     
    void start(struct sockaddr_in adresse,char idSMA[20],char idAgent[20])
    {
        //int socketprim;
    	SOCKET socketprim;
        char buffer[256];
    	int erreur;
    	socketprim = doconnect(adresse);
        bzero(buffer,256);
        sprintf(buffer,"005001002%s002002%s",idSMA,idAgent);
        printf("buffer=%s",buffer);
    	//erreur= write(socketprim,buffer,strlen(buffer));
    	erreur= send(socketprim,buffer,strlen(buffer));
    	if(erreur!=-1)
    	printf("\nInformation transmise au serveur avec succès!\n");
    	else 
    	printf("\nErreur d'ecriture dans la socketprim!\n");    
    	sleep(2);
    }
     
     
     
    void end(struct sockaddr_in adresse,char idSMA[20],char idAgent[20])
    {
        int socketprim;
        char buffer[256];
    	int erreur;
    	socketprim = doconnect(adresse);
        bzero(buffer,256);
        sprintf(buffer,"006001002%s002002%s",idSMA,idAgent);
        printf("buffer=%s",buffer);
    	//erreur= write(socketprim,buffer,strlen(buffer));*
    	erreur= send(socketprim,buffer,strlen(buffer));
    	if(erreur!=-1)
    	printf("\nInformation transmise au serveur avec succès!\n");
    	else 
    	printf("\nErreur d'ecriture dans la socketprim!\n");    
    }
    et client.c windows
    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 <winsock2.h>
    #pragma comment(lib, "ws2_32.lib")
    #include <string.h>
    #include <unistd.h>
    #include <stdio.h>
    #include <fcntl.h>
    #include <time.h>
    #include <errno.h>
    #include <stdlib.h>
    #include <winsock.h>
    #include <windows.h>
     
     
    //#pragma comment(lib, "ws2_32.lib")
     
    #define PORT 2343
     
     
    void error(const char *msg)
    {
        perror(msg);
        exit(0);
    }
     
     
    int doconnect(struct sockaddr_in adresse)
    {
        //int socketprim;
    	SOCKET  socketprim;
        int longueurstruct;
    	 int connectionserveur;
        longueurstruct = sizeof (struct sockaddr_in);
    	socketprim = socket (AF_INET, SOCK_STREAM, 0);
     
        if (socketprim == -1)
        perror ("creation socket sur le client");
    	if (connect (socketprim, (struct sockaddr *) &adresse, longueurstruct) == -1)
        perror ("liaison (par connect) du client");
     
        return socketprim;
    }
     
     
    void start(struct sockaddr_in adresse,char idSMA[20],char idAgent[20])
    {
        //int socketprim;
    	SOCKET socketprim;
        char buffer[256];
    	int erreur;
    	socketprim = doconnect(adresse);
        bzero(buffer,256);
        sprintf(buffer,"005001002%s002002%s",idSMA,idAgent);
        printf("buffer=%s",buffer);
    	//erreur= write(socketprim,buffer,strlen(buffer));
    	erreur= send(socketprim,buffer,sizeof(buffer),0);
    	//erreur= write(socketprim,buffer,strlen(buffer));
    	if(erreur!=-1)
    	printf("\nInformation transmise au serveur avec succès!\n");
    	else
    	printf("\nErreur d'ecriture dans la socketprim!\n");
    	Sleep(2);
    }
     
    void end(struct sockaddr_in adresse,char idSMA[20],char idAgent[20])
    {
      //int socketprim;
        SOCKET socketprim;
        char buffer[256];
    	int erreur;
    	socketprim = doconnect(adresse);
        bzero(buffer,256);
        sprintf(buffer,"006001002%s002002%s",idSMA,idAgent);
        printf("buffer=%s",buffer);
    	//erreur= write(socketprim,buffer,strlen(buffer));*
    	erreur= send(socketprim,buffer,sizeof(buffer),0);
    	if(erreur!=-1)
    	printf("\nInformation transmise au serveur avec succès!\n");
    	else
    	printf("\nErreur d'ecriture dans la socketprim!\n");
     
     
    }

  2. #2
    Membre émérite
    Avatar de imperio
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 852
    Points : 2 298
    Points
    2 298
    Par défaut
    Dans l'ensemble tu n'as presque rien a changer quand tu veux compiler ta partie reseau sous Windows. La seule difference vient de ces lignes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    //avant toute fonction reseau
    WSADATA WSAData;
    WSAStartup(MAKEWORD(2,0), &WSAData);
     
    //apres toute fonction reseau
    WSACleanup();
    Tu auras aussi besoin de ces 2 lignes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #include <winsock2.h>
    #pragma comment(lib, "ws2_32.lib")

Discussions similaires

  1. Connection php 5 sous linux vers oracle 7.3.4 sous windows 2003 server
    Par dorian-ya67 dans le forum Connexions aux bases de données
    Réponses: 2
    Dernier message: 16/05/2013, 14h06
  2. Réponses: 0
    Dernier message: 10/10/2011, 18h40
  3. Urgent : heure des logs sous Windows 2003 Server
    Par sergent.rock dans le forum Windows Serveur
    Réponses: 1
    Dernier message: 26/12/2005, 17h50
  4. Plantage de service sous Windows 2003 server
    Par akasim73 dans le forum MFC
    Réponses: 2
    Dernier message: 10/11/2005, 15h49
  5. Client FireBird pour un pda sous Windows CE.NET ?
    Par Skydiver dans le forum Installation
    Réponses: 1
    Dernier message: 04/02/2005, 14h21

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