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