IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Réseau C Discussion :

SendTo : Permission denied


Sujet :

Réseau C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 6
    Par défaut SendTo : Permission denied
    Bonjour,

    J'ai développé un petit programme en C++ sur un système Linux embarqué et j'ai le message d'erreur suivant lors de l'exécution : sendto(): Permission denied et je n'arrive pas à comprendre pourquoi

    Voici une partie du code source avec le sendto :
    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
     
    void sendUDPBroadcast(char * command) {
    	SOCKET			maSocket;
    	SOCKADDR_IN		serverAddr;
    	int				sent;
    	bool			tmpBool;
    	BYTE			*sendBuffer;
    	//char			*stringBuffer;
    	USHORT			bufferSize;
    	SOCKET csock;
    	socklen_t recsize = sizeof(serverAddr);
    	int sock_err;
     
    	maSocket=socket(AF_INET, SOCK_DGRAM, 0);
    	if (maSocket == INVALID_SOCKET) {
    		goto EndFunction;
    	}
     
    	if(bind(maSocket, (SOCKADDR *) &serverAddr, sizeof serverAddr) == SOCKET_ERROR)
    	{
    		perror("socket()");
    		exit(errno);
    	}
     
    	serverAddr.sin_family = AF_INET;   // famille INET (internet)
    	serverAddr.sin_addr.s_addr = inet_addr("255.255.255.255"); // on broadcaste à tout le monde
    	serverAddr.sin_port = htons(2152);	// numero du port du PC SERVEUR, htons convertit
     
    	tmpBool=true;
    	setsockopt(maSocket, SOL_SOCKET, SO_BROADCAST, (const char *)&tmpBool, sizeof(tmpBool));
     
    	encryptString(command, &sendBuffer, &bufferSize);
     
    	decryptString(sendBuffer, &test);
     
    	if (sendto(maSocket, (const char *)sendBuffer, bufferSize, 0, (SOCKADDR*)&serverAddr, sizeof(serverAddr)) < 0)
    	{
    		perror("sendto()");
    		exit(errno);
    	}
     
    	free(sendBuffer);
    	closesocket(maSocket);
     
     
    	EndFunction:;
    }
    J'espère que vous aurez des pistes pour résoudre ce problème

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    En lisant le man de sendto(), il renvoie le nombre de caractères émis, ou -1 s'il échoue, auquel cas errno contient le code d'erreur.

    J'ai peut que ton test ne soit mauvais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (sendto(maSocket, (const char *)sendBuffer, bufferSize, 0, (SOCKADDR*)&serverAddr, sizeof(serverAddr)) != bufferSize)
    {
    	perror("sendto()");
    	exit(errno);
    }
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 6
    Par défaut
    Citation Envoyé par ram-0000 Voir le message
    En lisant le man de sendto(), il renvoie le nombre de caractères émis, ou -1 s'il échoue, auquel cas errno contient le code d'erreur.

    J'ai peut que ton test ne soit mauvais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (sendto(maSocket, (const char *)sendBuffer, bufferSize, 0, (SOCKADDR*)&serverAddr, sizeof(serverAddr)) != bufferSize)
    {
    	perror("sendto()");
    	exit(errno);
    }
    Merci de ta réponse, j'ai remplacé ta portion de code par le suivant mais l'erreur reste la même malheureusement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if (sendto(maSocket, (const char *)sendBuffer, bufferSize, 0, (SOCKADDR*)&serverAddr, sizeof(serverAddr)) < 0)
    	{
    		perror("sendto()");
    		exit(errno);
    	}

  4. #4
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Par défaut
    Bonjour,

    Ca ne serait pas un simple probleme de droit Unix ? Que se passe-t-il si tu executes ton programme en root ?
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 6
    Par défaut
    Citation Envoyé par gangsoleil Voir le message
    Bonjour,

    Ca ne serait pas un simple probleme de droit Unix ? Que se passe-t-il si tu executes ton programme en root ?
    J'ai pensé à ce problème. Malheureusement, même en root, le problème reste identique.

  6. #6
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 452
    Par défaut
    C'est très subtil mais si, à la ligne 6, tu remplaces « bool tmpBool » par « int tmpBool », ça marchera mieux. Tu risques de rencontrer une autre erreur (comme Bad Adress) mais tu auras résolu, en principe, le problème qui nous occupe ici.

Discussions similaires

  1. sendto:Permission Denied (socket raw)
    Par olbat dans le forum Réseau
    Réponses: 20
    Dernier message: 06/10/2006, 23h15
  2. Bash - Permission Denied
    Par M.Dlb dans le forum Linux
    Réponses: 3
    Dernier message: 07/12/2004, 22h42
  3. Réponses: 4
    Dernier message: 02/11/2004, 15h18
  4. permission denied
    Par HULK dans le forum Apache
    Réponses: 2
    Dernier message: 08/04/2004, 19h46
  5. [PostgreSQL]permission denied
    Par alex2205 dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 13/02/2003, 13h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo