obtenir des flux d'une socket en c#
J'ai une application client-serveur qui communique via le protocole TCP/IP.
J'utilise System.Net.Sockets.Socket
type d'objet pour ascnyronous communication sur TCP. Bref je ouvrir une connexion, envoyer/recevoir des données et fermer la connexion. Et ma mise en œuvre est basée sur le type de Socket objets.
Maintenant, j'ai besoin d'utiliser une dll tierce partie de faire quelque chose. Cette dll attend un System.IO.Stream
type d'objet. J'ai donc besoin d'obtenir Flux objet de mon Socket objet.
Comment puis-je le faire?
Merci.
Soyez prudent lors du mélange de Socket et de Flux de données - une instance socket est thread-safe - une instance de flux de données n'est pas!
OriginalL'auteur Fer | 2012-05-09
Vous devez vous connecter pour publier un commentaire.
Assez simple en fait. Le constructeur de la NetworkStream classe accepte un socket pour envelopper:
http://msdn.microsoft.com/en-us/library/system.net.sockets.networkstream.aspx
Juste au cas où l'utilisateur de ce flux, vous voulez appeler
myStream.Close()
, je vous recommande de construire le NetworkStream avec la propriété de la douille:new NetworkStream(mySocket, true)
. Sinon, vous finissez par vous demander pourquoi le thread qui bloque dans une opération de lecture est toujours bloqué après la fermeture du volet.OriginalL'auteur Chris Shain
Essayez de regarder au Système.Net.Les Sockets.SocketType.Stream ?
Ou essayez de regarder le Système.Net.Les Sockets.NetworkStream ?
http://msdn.microsoft.com/en-us/library/system.net.sockets.networkstream.aspx
OriginalL'auteur John Smith