Socket à partir d'un NetworkStream ?

tomlev Messages postés 25 Date d'inscription samedi 22 octobre 2005 Statut Membre Dernière intervention 28 août 2007 - 31 mai 2007 à 03:46
IslandMan974 Messages postés 104 Date d'inscription mercredi 4 mai 2005 Statut Membre Dernière intervention 27 juin 2007 - 4 juin 2007 à 22:58
Salut,

Je cherche à récupérer la socket utilisée par un NetworkStream. Malheureusement la propriété Socket est protégée... et je ne peux pas dériver la classe NetworkStream pour pouvoir lire cette propriété, parce que ce n'est pas moi qui crée la Socket. Je ne vois pas trop pourquoi Microsoft a déclaré cette propriété comme protégée...
Quelqu'un aurait une idée pour la récupérer ? Merci

Tom

7 réponses

cs_coq Messages postés 6351 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 100
2 juin 2007 à 19:58
Salut,

Justement pour éviter que le code client n'y accède. Si c'est pour utiliser directement la socket, il n'y a pas grand intérêt à passer par NetworkStream.
Tu as un besoin particulier ?

/*
coq
MVP Visual C#
CoqBlog
*/
0
tomlev Messages postés 25 Date d'inscription samedi 22 octobre 2005 Statut Membre Dernière intervention 28 août 2007
3 juin 2007 à 03:08
En fait j'utilise un objet HttpListener (dans System.Net), qui me renvoie un HttpListenerContext contenant l'objet requête (type HttpListenerRequest) et l'objet réponse (HttpListenerResponse). La requête a une propriété InputStream de type NetworkStream pour lire le corps de la requête (i.e. ce qui est après les en-têtes, dans le cas d'une requête POST par exemple). La réponse a une propriété OutputStream (du même type) permettant d'envoyer au client le corps de la réponse. Par contre, pas de propriété Socket... et justement, j'aurais besoin d'accéder directement à la Socket utilisée par ces NetworkStream pour accéder à certaines de ses propriétés, mais apparemment c'est impossible. Enfin bon, je vais me débrouiller autrement...
Le but de tout ça est de créer un serveur Web ASP.NET (inspiré de Cassini, le "mini-serveur" dont les sources ont été publiées par Microsoft). J'espérais pouvoir éviter de gérer toute la couche de protocole HTTP grâce au HttpListener, mais c'est un peu galère en fait de faire le mapping avec l'objet HttpWorkerRequest utilisé par le runtime ASP.NET... ça n'a pas été prévu pour, apparemment.
En tous cas c'est marrant de voir que tous les outils sont présents dans le .NET Framework pour réaliser (plus ou moins) facilement un équivalent fait maison de IIS :-)
0
cs_coq Messages postés 6351 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 100
3 juin 2007 à 09:51
Ouep :-)

/*
coq
MVP Visual C#
CoqBlog
*/
0
IslandMan974 Messages postés 104 Date d'inscription mercredi 4 mai 2005 Statut Membre Dernière intervention 27 juin 2007 3
4 juin 2007 à 21:00
ReOuep
pendant un cours instant j'ai eu le cerveau qui q chauffé.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
IslandMan974 Messages postés 104 Date d'inscription mercredi 4 mai 2005 Statut Membre Dernière intervention 27 juin 2007 3
4 juin 2007 à 21:06
Bonjour,

Apres avoir relu ton message 3 ou 4 fois je me permets de te poser une question.
EN fait ce que tu veux faire c'est reconstituer le message qu'on t'envoi via reseau .
En gros tu doit etre capable de deviner en lisant le message ,ou plutot la trame si ton message envoyé si c'est un Post ,un get ou encore si il a ete envoyer via ftp ou http.

C'est ca ou g rien compris.

En tout cas bon courage.
0
tomlev Messages postés 25 Date d'inscription samedi 22 octobre 2005 Statut Membre Dernière intervention 28 août 2007
4 juin 2007 à 21:28
Pas vraiment... en fait, je sais que c'est de l'HTTP (j'utilise un HttpListener...), je peux sans problème obtenir les en-têtes de la requête, la méthode (POST/GET/...), mais ce que je ne peux pas obtenir, c'est la socket (encore ouverte car seuls les en-têtes ont été reçus à ce stade, et rien n'a encore été envoyé au client). Tout ce que j'ai, c'est des NetworkStream en lecture et en écriture sur cette socket... Enfin, vous cassez pas le cul, je me suis débrouillé sans...
0
IslandMan974 Messages postés 104 Date d'inscription mercredi 4 mai 2005 Statut Membre Dernière intervention 27 juin 2007 3
4 juin 2007 à 22:58
par contre je serais bien interesse par le source si c'est possible histoire de voir un peu .
0