Bonjour,
je travaille en ce moment sur l'émission d'un paquet en broad cast avec l'api winsock. L'émission semble se passer correctement mais je ne reçois rien.

Pour la partie émission en broad cast j'initialise ma socket comme ceci
(udp, avec le flag broad cast)

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

 //les tests des retours des différentes fonctions
 //ont été enlevé pour rendre le code plus lisible

SOCKET initBroadCast(void)
{
	SOCKET hSocket;
	int bBroadCast = 1;
	SOCKADDR_IN	sUdp;
	SOCKADDR_IN	srv_addr;
	unsigned	ulLocalPort = 10000;
	unsigned	ulRemotePort = 10001;
	struct in_addr	sLocalAdress;

	hSocket = socket (AF_INET, SOCK_DGRAM, IPPROTO_UDP) ;
	setsockopt (hSocket, SOL_SOCKET, SO_BROADCAST,(char *) &bBroadCast, sizeof (bBroadCast));
	memset (&sUdp, 0, sizeof(sUdp)); 
	sUdp.sin_family	= AF_INET ;

	sUdp.sin_addr.s_addr	= htonl(INADDR_ANY);
	sUdp.sin_port = htons ((unsigned short)ulLocalPort) ;
	bind (*phSocket, (SOCKADDR *) &sUdp, sizeof (SOCKADDR_IN)) ;

	memset(&srv_addr, 0, sizeof(srv_addr)); 
	srv_addr.sin_family = AF_INET;

	sLocalAddr.S_un.S_addr = inet_addr("192.168.255.255");
	memcpy(&srv_addr.sin_addr, &sLocalAddr, sizeof(sLocalAddr));
	srv_addr.sin_port = (short)htons( (unsigned short) ulRemotePort);
	connect (hSocket, (LPSOCKADDR)&srv_addr, sizeof(srv_addr);

	return hSocket;
}
Pour la partie réception
(udp non connecté)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 SOCKET initReception(void)
 {
 	SOCKADDR_IN	sUdp;
	unsigned ulLocalPort = 10001;

	hSocket = socket (AF_INET, SOCK_DGRAM, IPPROTO_UDP);
	memset (&sUdp, 0, sizeof(sUdp)); 
	sUdp.sin_family = AF_INET ;
	sUdp.sin_addr.s_addr	= htonl(INADDR_ANY);
	sUdp.sin_port = htons ((unsigned short)ulLocalPort) ;
	bind (hSocket, (SOCKADDR *) &sUdp, sizeof (SOCKADDR_IN)) ;
	return hSocket;
}
Si vous voyez des choses incohérentes au niveau des options.

Merci.