SocketExeption C# [Résolu]

Signaler
Messages postés
8
Date d'inscription
mardi 15 décembre 2009
Statut
Membre
Dernière intervention
4 février 2010
-
Messages postés
8
Date d'inscription
mardi 15 décembre 2009
Statut
Membre
Dernière intervention
4 février 2010
-
Bonjour à tous,
J'effectue la création d'un socket de la façon suivante:
Socket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP);

Mais j'obtiens à l'éxecution de cette ligne l'erreur suivante:
System.Net.Sockets.SocketException (0x80004005) : Une tentative d'accès à un socket de manière interdite par ses autorisations a été tentée at System.Net.Sockets.Socket..ctor(AddressFamily addressFamily, SocketTypesocketType, ProtocolType protocolType)

Je n'arrive pas à comprendre pourquoi!
Pourtant la création que je fais me semble tout à fait correcte.
Merci d'avance de votre aide!
maynalysa
A voir également:

3 réponses

Messages postés
6352
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
82
Bonjour,

Si mes souvenirs sont bons, la création de sockets de type raw nécessite de disposer de privilèges administratifs.

/*
coq
MVP Visual C#
CoqBlog
*/
Messages postés
8
Date d'inscription
mardi 15 décembre 2009
Statut
Membre
Dernière intervention
4 février 2010

Après tests sous plusieurs plate forme, je me suis rendue finalement compte que le problème était issu du système d'exploitation: VISTA !
Je ne sais pour quelle raison, cette ligne ne passe pas sous vista, par contre contre aucuns soucis sous XP.
comme quoi....


maynalysa
Messages postés
8
Date d'inscription
mardi 15 décembre 2009
Statut
Membre
Dernière intervention
4 février 2010

Oui effectivement. J'ai trouvé la solution à ce problème.
Il faut être admin pour créer des raw sockets sur la plupart des OS.
Donc rajouter un manifest à l'application pour lui dire de s'exécuter en admin:

Clic droit sur le projet -> Add new item -> Application Manifest File -> Ok
Remplacer cette ligne
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
par celle à
<requestedExecutionLevel level="requireAdministrator"/>

voilà !