Bonjour,
J'ai un problème avec les sockets. J'ai fait un petit serveur et un client qui se connecte dessus. Mais le client n'arrive pas à ce connecter mais le programme continue quand même. Sans aucun message d'erreur. Le serveur, lui, attend sur la fonction accept et ne voit pas le client.
Voici le code du serveur :
Code c++ : 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 #include <winsock2.h> /*socket*/ #include<iostream> #pragma comment(lib, "ws2_32.lib") using namespace std; 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(200); sock = socket(AF_INET,SOCK_STREAM,0); bind(sock, (SOCKADDR *)&sin, sizeof(sin)); listen(sock,0); /* connection socket */ int sinsize = sizeof(csin); csock = accept(sock, (SOCKADDR *)&csin, &sinsize); cout<<"1"<<"\n"; while(1) { memset(buffer, '\0', sizeof(buffer)); /*on vide le buffer*/ recv(csock, buffer, sizeof(buffer), 0); cout<<buffer; } }
Voici le code du client :
Code c++ : 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 #include <winsock2.h> /*socket*/ #include <iostream> #pragma comment(lib, "ws2_32.lib") using namespace std; void main() { WSADATA WSAData; WSAStartup(MAKEWORD(2,0), &WSAData); SOCKET sock; SOCKADDR_IN sin; char buffer[BUFSIZ]; sin.sin_addr.s_addr = inet_addr("25-38-998-154"); sin.sin_family = AF_INET; sin.sin_port = htons(200); sock = socket(AF_INET,SOCK_STREAM,0); connect(sock, (SOCKADDR *)&sin, sizeof(sin)); cout<<"1"<<"\n"; while(1) { cout << "MSG : "; cin >> buffer; send(sock, buffer, sizeof(buffer), 0); } }
Merci de me dire ou est le problème.
VB
Partager