SocketExeption C#

Résolu
moon@lysa Messages postés 29 Date d'inscription   Statut Membre Dernière intervention   -  
moon@lysa Messages postés 29 Date d'inscription   Statut Membre Dernière intervention   -
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.

3 réponses

moon@lysa Messages postés 29 Date d'inscription   Statut Membre Dernière intervention  
 
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!
0
moon@lysa Messages postés 29 Date d'inscription   Statut Membre Dernière intervention  
 
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...
0
moon@lysa Messages postés 29 Date d'inscription   Statut Membre Dernière intervention  
 
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à !
0