Je suis débutant et je voudrais faire en sorte d'envoyer un message au mon serveur et des que ce dernier reçoit un message, il réponde en fonction de se qui associé au message reçut : par exemple si j'envois au serveur le message '!salut" il réponde par un "slt a toi".
Code du 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 #include <winsock2.h> /*socket*/ #include <stdio.h> /*printf*/ #include <iostream> #pragma comment(lib, "ws2_32.lib") void main() { char ip[256]; std::cout << "IP : "; std::cin >> ip; std::cout << std::endl; WSADATA WSAData; WSAStartup(MAKEWORD(2,0), &WSAData); SOCKET sock; SOCKADDR_IN sin; char buffer[BUFSIZ]; char msg[256]; sin.sin_addr.s_addr = inet_addr(ip); sin.sin_family = AF_INET; sin.sin_port = htons(4444); sock = socket(AF_INET,SOCK_STREAM,0); bind(sock, (SOCKADDR *)&sin, sizeof(sin)); connect(sock, (SOCKADDR *)&sin, sizeof(sin)); while(1) { std::cout << "MSG : "; std::cin >> msg; memset(buffer, '\0', BUFSIZ); sprintf(buffer, "%s\n", msg); send(sock, buffer, sizeof(buffer), 0); memset(buffer, '\0', BUFSIZ); /*on vide le buffer*/ recv(sock, buffer, BUFSIZ-1, 0); printf("%s\n",buffer); } }
Code du 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 #include <winsock2.h> /*socket*/ #include <stdio.h> /*printf*/ #pragma comment(lib, "ws2_32.lib") void main() { WSADATA WSAData; WSAStartup(MAKEWORD(2,0), &WSAData); SOCKET sock; SOCKET csock; SOCKADDR_IN sin; SOCKADDR_IN csin; char buffer[BUFSIZ];; sin.sin_addr.s_addr = htonl(INADDR_ANY); sin.sin_family = AF_INET; sin.sin_port = htons(4444); sock = socket(AF_INET,SOCK_STREAM,0); bind(sock, (SOCKADDR *)&sin, sizeof(sin)); listen(sock,0); while(1) { memset(buffer, '\0', BUFSIZ); /*on vide le buffer*/ int sinsize = sizeof(csin); csock = accept(sock, (SOCKADDR *)&csin, &sinsize); recv(csock, buffer, BUFSIZ-1, 0); printf("%s\n",buffer); if(strstr(buffer,"!salut")) { sprintf(buffer, "slt a toi\n"); send(csock, buffer, sizeof(buffer), 0); } } }
Mon problème c'est que quand j'envoi un premier "!salut" il me répond bien par "slt a toi" mais après ça ne marche plus, j'ai le prompt "MSG : " sur le client qui s'affiche deux fois et après plus rien, et pendant ce temps la sur le serveur il ne c'est afficher qu'une seul fois"!salut".
Partager