8O A la fin de mon article, il y a des références. Tu les as lues ?Citation:
Envoyé par lukbutor
http://vidalcharles.free.fr/lf/socket.html
mais si tu trouves mon article compliqué...
Version imprimable
8O A la fin de mon article, il y a des références. Tu les as lues ?Citation:
Envoyé par lukbutor
http://vidalcharles.free.fr/lf/socket.html
mais si tu trouves mon article compliqué...
je viens de parcourir rapidement le tutoriel de ton lien Emmanuel Delahaye et il m'a l'air très complet , merci beaucoup , j'espère que ça va m'aider .
Salut :)
Je n'ai pas lu les autres réponses du sujet, mais je vais tenter de t'aider un peu :) Pour mes remarques => voir commentaires dans le code ci-dessous.
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 #include <stdio.h> #include <stdlib.h> #include <winsock2.h> #pragma comment(lib, "ws2_32.lib") int main(int argc, char *argv[]) { /* Je te conseille de mettre toutes tes déclarations en début de fichier, ce sera beaucoup plus compréhensible ;) */ char buff[255] = {0}; /* Les communications réseau utilisent les caractères \r\n pour marquer une fin de ligne. Si tu définis directement le contenu de ta chaine de caractères, pas besoin du [50], le compilateur s'en occupera... */ char canal[] = "hello\r\n" ; WSADATA wsadata; SOCKET sock; SOCKADDR_IN sin; /* Utilises plutôt la version 2,2 ;) */ WSAStartup(MAKEWORD(2,2),&wsadata); sock = socket(AF_INET, SOCK_STREAM, 0); sin.sin_addr.s_addr = inet_addr("127.0.0.1"); sin.sin_family = AF_INET; sin.sin_port = htons(2007); /* Le client n'a pas besoin de bind ni de listen, il a juste besoin de socket() et de connect() bind(sock, (SOCKADDR*)&sin, sizeof(sin)); */ connect(sock, (SOCKADDR *)&sin, sizeof(sin)); /* Même remarque bind(sock, (SOCKADDR*)&sin, sizeof(sin)); listen(sock, 10); */ /* Ca fonctionnera mais je te conseille tout de même de controler l'envoi de données ;) */ send(sock, canal, strlen(canal) + 1, 0); /* Pareil */ recv (sock, buff, sizeof(buff), 0); printf("%s\n\n\n", buff); closesocket(sock); WSACleanup(); system("PAUSE"); return 0; }
J'ai peut être loupé quelques autres erreurs. Bref, ton programme actuel est incomplet (il manque notamment les controles sur les fonctions utilisées, etc...) mais il devrait fonctionner et t'aider à t'y retrouver dans les sockets ;)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 #include <stdio.h> #include <stdlib.h> #include <winsock2.h> #pragma comment(lib, "ws2_32.lib") int main(int argc, char *argv[]) { char buff[255] = {0}; int i = 0; WSADATA wsadata; SOCKET sock; SOCKET client; SOCKADDR_IN sin; SOCKADDR_IN client_sin; int sinsize = sizeof(sin); WSAStartup(MAKEWORD(2,2), &wsadata); sock = socket(AF_INET, SOCK_STREAM, 0); /* Il est possible que ça fonctionne sans htonl, mais je te conseille de le mettre */ sin.sin_addr.s_addr = htonl(INADDR_ANY); sin.sin_family = AF_INET; sin.sin_port = htons(2007); /* Un seul bind suffit, pq binder un socket qui n'existe même pas ? De toute façon il ne faut pas le binder */ bind(sock, (SOCKADDR*)&sin, 0); /* bind(client,(SOCKADDR*)&client_sin,0); */ listen(sock, 10); printf("\n\tServeur en route\n"); while(1) { client = accept(sock, (SOCKADDR*)&client_sin, &sinsize); recv(client, buff, sizeof(buff), 0); printf("%s", buff); /* Je te déconseille d'envoyer des chaines de cette façon... Utilise plutot une variable qui contient le message à envoyer ;) */ send(client, "hello\r\n", 8, 0); } closesocket(sock); WSACleanup(); system("PAUSE"); return 0; }
Bonne chance
reeeeeeeeeeeeeeeeeeeeeeeee
Excusez-moi de vous redéranger mais j'ai un nouveau problème :
mon compilateur (DEV C++) ne reconnais pas la fonction fork();:
link error
comment puis-remédier à ce problème??????
merci d'avance à tous !!!!!!!!!!!
Pas de fork() sous Windows. je recommande les threads POSIX, c'est portable.Citation:
Envoyé par lukbutor
http://emmanuel-delahaye.developpez.com/pthreads.htm