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):
et client.c windowsCode:
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"); }
Code:
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"); }