SocketExeption C#
Résolu
moon@lysa
Messages postés
32
Statut
Membre
-
moon@lysa Messages postés 32 Statut Membre -
moon@lysa Messages postés 32 Statut Membre -
Bonjour à tous,
J'essaie d'inclure un module d'écoute réseau dans mon application développée en C#. Pour cela je crée mon socket de la manière suivante:
Socket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP);
Mais j'ai l'erreur suivante à l'execution:
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 j'ai ce message, j'ai cependant cherché sur le site de support microsoft mais impossible de trouver une quelconque piste....
Merci d'avance de votre aide.
J'essaie d'inclure un module d'écoute réseau dans mon application développée en C#. Pour cela je crée mon socket de la manière suivante:
Socket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP);
Mais j'ai l'erreur suivante à l'execution:
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 j'ai ce message, j'ai cependant cherché sur le site de support microsoft mais impossible de trouver une quelconque piste....
Merci d'avance de votre aide.
3 réponses
serait-il possible que la combinaison InterNetwork ( addressFamily), Raw (socketType) et IP (protocolType) ne soit pas valide ?
Si non, ai-je fais une erreur dans la façon de créer mon socket? (vu que le message d'erreur intervient à ce moment précis )
Merci de votre aide!
Si non, ai-je fais une erreur dans la façon de créer mon socket? (vu que le message d'erreur intervient à ce moment précis )
Merci de votre aide!
A force de chercher, j'ai trouvé qu'en fait, l'erreur est liée au système d'exploitation.... VISTA !
Je ne sais pour quelle raison sous vista cette ligne ne passe...
Création OK sous WIN XP.
comme quoi...
Je ne sais pour quelle raison sous vista cette ligne ne passe...
Création OK sous WIN XP.
comme quoi...
EN FAIT, la solution à ce problème est tout autre.
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à !
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à !