bonjour

Dev : Visual Studio et VisualGDB .

Après Windows , je m'essaye à Rasberry Linux .

Je développe un projet . une appli entre les port USB et une com en SNMP . La gestion se fait sans aucun problème . La partie IP c-est la KATA

Je ne reçoit rien en 161 et j'ai l'impression que rien ne sort . J’avoue être totalement perdu ... ci joint un bout de code pour faire mes tests .
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
36
37
38
39
40
41
42
43
44
45
46
47
48
 
	int handle = socket(AF_INET, SOCK_DGRAM, 0 ); // IPPROTO_UDP
	if (handle < 0) {
		perror("socket");
		exit(1);
	}
	char packet_data[1024];   
	int opt_length = 0;
 
	struct sockaddr_in servaddr;
	memset(&servaddr, 0, sizeof(sockaddr_in));
	servaddr.sin_family = AF_INET;
	servaddr.sin_port = htons(161)	;
	servaddr.sin_addr.s_addr = inet_addr("192.168.2.30");
	bzero(&(servaddr.sin_zero), 8); 
 
	if ( bind( handle, (struct sockaddr*)&servaddr, sizeof(servaddr) ) == -1 ) {
		perror("bind");
	//	exit(1);
	}
	perror("bind");
	perror("setsockopt");
	rc = setsockopt(handle, SOL_SOCKET, SO_REUSEADDR, &packet_data, sizeof(packet_data));
	if (rc != 0) 
	{
		perror("setsockopt");
	}
	perror("setsockopt");
	if (connect(handle, (struct sockaddr*)&servaddr, sizeof(servaddr)) < 0 )
	{
		perror("connect");
	}
	perror("connect");
	socklen_t lenght = sizeof(servaddr);          
//	while (1)
//	{
	int bytes;
	while (1) {
		if (sendto(handle, packet_data, strlen(packet_data), 0, (struct sockaddr *) &servaddr, sizeof(servaddr)) < 0) {
			perror("sendto");
			exit(1);
		}
		sleep(1);
                while ((bytes = recv(handle, packet_data, 1024 , 0)) > 0) {
		 packet_data[bytes] = '\0';
		 printf("recv: %s\n", packet_data);
		}
	}

le bind remonte OK
le connect aussi .

Est ce que mon appli a bien tous les droits pour ouvrir et écouter le 161 ? Sur VisualGDB , l'option "Run as root" est validée .

avec netstat -tunlp :

udp 0 0 127.0.0.1:161 0.0.0.0:*

netstat -an | grep udp

udp 0 0 127.0.0.1:123 0.0.0.0:*
udp 0 0 0.0.0.0:123 0.0.0.0:*
udp 164032 0 192.168.2.30:161 192.168.2.30:161 ESTABLISHED
udp 0 0 127.0.0.1:161 0.0.0.0:*

sur whireShare ( poste client ) message : port unreachable .. ( port fermé ? )

Merci beaucoup par avance pour vôtre aide