Bonjour,
Voila j'ai un problème au niveau du client et je ne sais pas vraiment pourquoi...
j'ai 3 fichiers pour le serveurs et 3 fichiers pour le client.

Le Client :
connexion.c
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
#include "connexion.h"
#include <stdio.h>
 
SOCKET initialiser ()
{	
	SOCKET sock = socket(AF_INET, SOCK_STREAM, 0);
	if(sock == SOCKET_INVALIDE)
	{
		printf("Socket invalide pour socket()\n");
		close(sock);
		exit(1);
	}
 
	return sock;
}
 
SOCKET connexion (SOCKET sock, char adress_ip[])
{
	int erreur;
	SOCKADDR_IN sin = { 0 };
	sin.sin_addr.s_addr = inet_addr(adress_ip);
	sin.sin_port = htons(10000);
	sin.sin_family = AF_INET;
	printf("essai\n");
	erreur = connect(sock, (SOCKADDR *) &sin, sizeof(SOCKADDR));
	if(erreur == ERREUR_SOCKET)
	{
		printf("Socket invalide pour connect()\n");
		close(sock);
		exit(1);
	}
 
	return sock;
}
 
void reception (SOCKET sock);
Je n'ai pas encore implémenté reception(SOCKET sock);

connexion.h

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
#ifndef CONNEXION_H
#define CONNEXION_H
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <netdb.h>
typedef int SOCKET;
typedef struct sockaddr_in SOCKADDR_IN;
typedef struct sockaddr SOCKADDR;
typedef struct in_addr IN_ADDR;
#define SOCKET_INVALIDE -1
#define ERREUR_SOCKET -1
 
 
/*
   initialisation du socket
   retourne le socket initialisé
*/
 
SOCKET initialiser ();
 
/*
   connexion au serveur avec le socket initialisé
   retourne la connexion
*/
 
SOCKET connexion (SOCKET sock, char adress_ip[]);
 
/*
   reception des données du serveur
   ne retourne rien
*/
 
void reception (SOCKET sock);
 
#endif
main connexion :

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
#include "connexion.h"
 
int main (void)
{
	SOCKET client;
	char adress_ip[16] = "";
	printf("Adresse IP de l'ordinateur : ");
	fgets(adress_ip,sizeof adress_ip, stdin);
	client = initialiser();
	client = connexion(client,adress_ip);
 
	if(client == ERREUR_SOCKET || client == SOCKET_INVALIDE)
	{
		printf("Connexion impossible\n");
	}else{
		printf("Connexion réussie\n");
	}
 
	return 0;
}
Le Serveur :

ServeurConnexion.c :
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
#include "ConnexionServeur.h"
#include <stdio.h>
 
SOCKET initialiser()
{
	SOCKET sock = socket(AF_INET, SOCK_STREAM, 0);
	if(sock = SOCKET_INVALIDE)
	{
		printf("Socket invalide pour socket()\n");
		close(sock);
	}
 
	return sock;
}
 
SOCKET ecoute(SOCKET sock)
{
	int erreur;
	SOCKET serv_sock;
	SOCKADDR_IN sin = { 0 };
	SOCKADDR_IN serv_sin = { 0 };
	int sin_size = sizeof serv_sin;
	sin.sin_addr.s_addr = htonl(INADDR_ANY);
	sin.sin_family = AF_INET;
	sin.sin_port = htons(10000);
	erreur = bind (sock, (SOCKADDR *) &sin, sizeof sin);
	if(erreur == ERREUR_SOCKET)
	{
		printf("Socket invalide pour bind()\n");
		close(sock);
	}
	erreur = listen (sock, 1);
	if(erreur == ERREUR_SOCKET)
	{
		printf("Socket invalide pour listen()\n");
		close(sock);
	}
	serv_sock = accept (sock, (SOCKADDR *) &serv_sin, &sin_size);
	if(serv_sock == SOCKET_INVALIDE)
	{
		printf("Socket invalide pour accept()\n");
		close(serv_sock);
		close(sock);
	}
 
	return serv_sock;
}
 
void reception(SOCKET sock);
ServeurConnexion.h :
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
#ifndef CONNEXION_H
#define CONNEXION_H
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <netdb.h>
typedef int SOCKET;
typedef struct sockaddr_in SOCKADDR_IN;
typedef struct sockaddr SOCKADDR;
typedef struct in_addr IN_ADDR;
#define SOCKET_INVALIDE -1
#define ERREUR_SOCKET -1
 
 
/*
   initialisation du socket
   retourne le socket initialisé
*/
 
SOCKET initialiser ();
 
/*
   connexion au serveur avec le socket initialisé
   retourne la connexion
*/
 
SOCKET ecoute (SOCKET sock);
 
/*
   reception des données du serveur
   ne retourne rien
*/
 
void reception (SOCKET sock);
 
#endif
Le main pour le 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
#include "ServeurConnexion.h"
 
int main (int argc, char ** args)
{
	SOCKET serveur;
	SOCKET discussion_client;
	serveur = initialiser();
	discussion_client = ecoute(serveur);
 
	if((discussion_client != SOCKET_INVALIDE) && (discussion_client != ERREUR_SOCKET))
	{
		printf("Connexion établie");
	}
 
	return 0;
}
Le problème est que lorsque je lance le serveur, il passe par tous les messages d'erreurs...
Je n'ai pas encore essayé le Client.

Merci d'avance pour votre aide.