Bonjour à tous ! Tout d'abord je me présente je suis étudiant en BTS iris et pour ma deuxième année, je dois développé un projet... Il s'agit d'un diagnostic pour automobile. Pour cela je dois développé un client serveur en multi thread. Ayant des difficulté en langage C/ C++, je demande un peu d'aide afin de réussir a le rendre fonctionnel. J'ai déjà commencé le programme que je vous collerai par la suite...
Si quelqu'un peut m'aider plus méthodiquement c'est avec plaisir que je lui donnerai mon adresse msn.
Merci a vous.

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
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
 
#pragma comment(lib,"WSOCK32.LIB")
#include <stdio.h>
#include <conio.h>
#include <winsock.h>
#include <errno.h>
/*************************************************
serveur en mode console
*************************************************/
 
#define PORT 5005
 
#define Nb_Max_de_Client 10
 
void Fonction_Thread_Serveur(LPVOID param)
{
	char Message_Emis[255];
	SOCKET Desc_Socket_Locale;
	int fin=FALSE;
	Desc_Socket_Locale=(SOCKET)param;
 
	while(!fin)
	{
		printf("message : ");
		gets(Message_Emis);
		send(Desc_Socket_Locale,Message_Emis,sizeof(Message_Emis),0);
	}
	closesocket(Desc_Socket_Locale);
}
 
 
int main(void)
{
	int Code_Retour;
	SOCKET Desc_Socket_Connection;
	SOCKADDR_IN Adresse_Socket_Connection;
	WORD wVersionRequested;
	WSADATA wsaData;
 
	wVersionRequested=MAKEWORD(1,1);
 
	Code_Retour=WSAStartup(wVersionRequested,&wsaData);
 
	if(Code_Retour!=0)
	{
		perror("WSAStartup\t");
		getch();
		WSACleanup();
		exit(errno);
	}
	printf("la version supportee est : %d.%d\n",
		LOBYTE(wsaData.wHighVersion),
		HIBYTE(wsaData.wHighVersion)
		);
 
	Desc_Socket_Connection=socket
		(
		AF_INET,
		SOCK_STREAM,
		0
		);
 
		printf("valeur de la socket = %d\n",Desc_Socket_Connection);
 
		ZeroMemory(&Adresse_Socket_Connection,sizeof(Adresse_Socket_Connection));
		Adresse_Socket_Connection.sin_family=AF_INET;
		Adresse_Socket_Connection.sin_port=htons(PORT);
 
	Code_Retour=bind
		(
		Desc_Socket_Connection,
		(struct sockaddr*)&Adresse_Socket_Connection,
		sizeof(Adresse_Socket_Connection)
		);
 
	if(Code_Retour!=0)
	{
		perror("bind\t");
		getch();
		closesocket(Desc_Socket_Connection);
		WSACleanup();
		exit(errno);
	}
	Code_Retour=listen(Desc_Socket_Connection,Nb_Max_de_Client);
	if(Code_Retour!=0)
	{
		perror("listen\n");
		WSACleanup();
		exit(errno);
	}
	printf("serveur en attente d'une connection\n\n");
	printf("***************arret du serveur par<CTRL><C>**************\n\n");
 
	while(TRUE)
	{
		SOCKET * pt_Nouveau_Socket_Serveur;
		SOCKADDR_IN Adresse_Socket_Cliente;
		int Longueur_Adresse;
		HANDLE hthread;
		DWORD threadID;
 
 
		pt_Nouveau_Socket_Serveur = new SOCKET;
 
		Longueur_Adresse = sizeof(Adresse_Socket_Cliente);
 
		*pt_Nouveau_Socket_Serveur=accept
			(
			Desc_Socket_Connection,
			(struct sockaddr*)&Adresse_Socket_Cliente,
			&Longueur_Adresse
			);
		printf("connection accepte depuis le port client %d\n",
			ntohs(Adresse_Socket_Cliente.sin_port));
		hthread=CreateThread
			(
			NULL,
			0,
			(LPTHREAD_START_ROUTINE)Fonction_Thread_Serveur,
			(LPVOID)*pt_Nouveau_Socket_Serveur,
			0,
			&threadID
			);
	}
	return (0);
}
Le problème est que mon client ne veut pas dialoguer avec ce serveur.

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
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
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <errno.h>
#include <iostream.h>
#include <sys/types.h>
#include "winsock2.h"
 
 
#pragma comment(lib,"ws2_32.lib")
 
	struct sockaddr_in addr;
	struct hostent *host;
	int port;
	char *buff;
	char hostn[50];
	int sock;
	int c;
	int r;
	struct protoent *proto;
 
 
 
int main(int argc, char* argv[])
{
	int conect, ret;
 
	WSADATA WSAData;
	WSAStartup(MAKEWORD(2,0),&WSAData);
 
	cout<<"Ecrivez le nom du serveur\n";
 
	cin>> hostn;
 
	cout<<"Ecrivez le port\n";
 
	cin>>port;
 
	host=gethostbyname(hostn);
 
	cout<<hostn<<":"<<port<<"\n";
 
	sock=socket(AF_INET, SOCK_STREAM, 0);
 
	if(sock<0)
	{
		printf("Creation de la socket echoue\n");
	}
 
	addr.sin_family = AF_INET;
	addr.sin_port = htons(port);
	addr.sin_addr.s_addr =*((unsigned long *)host->h_addr_list[0]);
 
 
	conect=connect(sock,(struct sockaddr *) &addr,sizeof(addr));
 
 
	buff=(char*) malloc (100);
	ret=recv(sock,buff,100,0);
	buff[ret]=0;
	printf("message recu :");
	puts(buff);
	printf("\n");
 
	free(buff);
 
	closesocket(sock);
 
	WSACleanup();
 
	return 0;
}
Je vous préviens je suis vraiment débutant dans ce domaine merci d'être indulgent.
merci