Bonjour à tous,
Tout d'abord, je vais vous resituer un peu le contexte : j'ai écrit un programme en C++ à cross-compiler et à charger sur un micro-controleur. Ce programme permet de configurer les entrees/sorties du module en fonction de ce qui arrive sur un port UDP.
Pour le tester, j'ai écrit ce petit programme, qui permet d'envoyer ce que je veux en UDP (pas forcement un string, mais pour l'intant j'essaye avec "Salut !") :
Ma question est à propos du test de ce programme de test
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 <string.h> #include <stdio.h> #include <stdlib.h> #include <sys/socket.h> #include <netinet/in.h> int main(void) { uint16_t port = 8080; uint32_t ip_destination; char *string_ip = "127.0.0.1"; int sock; int nb_octet; const char *signal = "Salut !"; struct sockaddr_in info_socket; /*Creation de la socket sur le domaine internet*/ sock = socket(PF_INET, SOCK_DGRAM, 0); if (sock < 0) { perror("socket "); exit(EXIT_FAILURE); } /*Initialisation de la structure contenant l'adresse de l'hote et le port utilise*/ info_socket.sin_family = AF_INET; info_socket.sin_port = htons(port); //conversion du numero de port (void)inet_aton(string_ip, &ip_destination); //conversion de l'adresse ip info_socket.sin_addr.s_addr = ip_destination; /*Liaison entre la socket et la structure*/ if ( bind(sock, (struct sockaddr *) &info_socket, sizeof (info_socket)) < 0) { perror("bind "); exit(EXIT_FAILURE); } /*Envoie du signal*/ nb_octet = sendto(sock, signal, strlen(signal) + 1, 0, (struct sockaddr *) &info_socket, sizeof(info_socket)); if (nb_octet < 0) { perror ("sendto "); exit (EXIT_FAILURE); } /*Fermeture de la socket*/ (void)shutdown(sock, 2); }j'aimerais ne pas avoir à écrire un programme pour tester un programme de test, ça commancerait à être ridicule.
J'ai donc essayé d'ecouter le port où le programme est sensé écrire : j'ai ouvert un terminal et lancé netcat comme ceci :
Mais une fois Netcat lancé, lorsque j'exécute le programme, apparait l'erreur suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part netcat -u -l -p 8080
Est-ce que vous voyez pourquoi le binding ne se fait pas?bind : Address already in use
Est-ce que vous connaissez autre chose que netcat pour tester un programme en UDP ?
Merci d'avance.
Partager