Socket server programming error bind()

Bonjour à tous,
J’ai récèment fait l’acquisition d’une raspberry pi 4 et j’ai ce projet qui est de faire communiquer mon ordinateur (client) avec ma raspberry (serveur). La compilation et le débbogage n’affichent aucune erreur apparente mais, lorsque j’exécute mon fichier server.c sur ma raspberry, j’ai un problème avec la fonction bind(). En effet, il m’est soit affiché « cannot assign requested address » ou « permission denied »(ça c’est quand j’écris INADDR_ANY dans la fonction inet_addr()). De ce que j’ai pu trouver en faisant des recherches le problème viendrait de mon addresse ip mais je ne vois pas comment cela pourrait être vraiment relié. Voici un bout de mon server.c :
#include <stdio.h>
#include <string.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>// enable write to be used
#include <errno.h>
#include

int main(int argc, char* argv[])
{
int my_socket, new_socket,c;
struct sockaddr_in server,client;
char* message;
std:: string client_IP_Addr=« 192.168.0.102 »;
int bind_value;
//Create socket
my_socket = socket(AF_INET , SOCK_STREAM , 0);
if (my_socket == -1)
{
printf(« Could not create socket »);
}
//Geting client ip adress and port
//Prepare the sockaddr_in structure
memset(&server,0,sizeof(server));
server.sin_family = AF_INET;
//inet_pton(AF_INET,client_IP_Addr.c_str(),&server.sin_addr);–>if value=1 => no error, otherwise yes there are errors
server.sin_port = htons(22);
server.sin_addr.s_addr=inet_addr(client_IP_Addr.c_str());//–> error cannot assign requested address
//server.sin_addr.s_addr=htonl(INADDR_ANY);–> Get error permission denied
//Bind
bind_value=bind(my_socket,(struct sockaddr *)&server , sizeof(server));//bind refuses to work although all values in it seems valid since there’re no generated errors in the previous code lines
if( bind_value == -1)
{
puts(« bind failed »);
perror(« bind error »);
return 1;
}
puts(« bind done »);
…}

Merci d’avance pour votre aide

hello,

tu le lance avec sudo ton programme ?

Bonjour @bof ,
je te remercie déjà pour ta réponse et pour y faire suite, j’exécute directement mon code depuis la platteforme de programmation « Geany ».

je ne connais pas geany et je ne sais pas si lance les programmes sous un utilisateur lambda ou si il est capable de passer en root…

ce qui m’a fait penser a un problème de droit c’est que si tu passe la commande ip sans sudo t’as ça :

ip addr add 192.168.1.5/24 dev wlan0
RTNETLINK answers: Operation not permitted

donc l’'idée c’est de lancer l’exécutable directement ds une console avec sudo.