SocketExeption C#

Résolu
maynalysa Messages postés 8 Date d'inscription mardi 15 décembre 2009 Statut Membre Dernière intervention 4 février 2010 - 18 janv. 2010 à 14:37
maynalysa Messages postés 8 Date d'inscription mardi 15 décembre 2009 Statut Membre Dernière intervention 4 février 2010 - 2 févr. 2010 à 00:38
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

3 réponses

cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
2 févr. 2010 à 00:11
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
*/
1
maynalysa Messages postés 8 Date d'inscription mardi 15 décembre 2009 Statut Membre Dernière intervention 4 février 2010
18 janv. 2010 à 16:20
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
0
maynalysa Messages postés 8 Date d'inscription mardi 15 décembre 2009 Statut Membre Dernière intervention 4 février 2010
2 févr. 2010 à 00:38
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à !
0
Rejoignez-nous