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