2016-03-17 1 views
0

Lorsqu'il s'agit d'un client TCP, en particulier lorsque le flux doit être crypté, le message ne sera pas transmis à moins que le CryptoCtream ne soit fermé et que le flux interne ne soit pas lisible, être disposé.Communication bidirectionnelle utilisant le client TCP uniquement

Par exemple

TCPClient client = new TCPClient("some ip", 1234); 
using(var i = new CryptoStream(client.GetStream(), myEncryptor(), CryptoStreamMode.Write) { 
    i.Write(some Data, 0, 1024); 
} 

J'ai essayé la chasse, mais il semble que les données peuvent être communiquées uniquement à partir du client vers le serveur de cette façon. Conscient de toutes les alternatives, je suis curieux de savoir comment cela pourrait être rendu possible (envoi de données en utilisant TCP Client et réception d'une réponse même sans réglage d'un second canal).

+0

bien vous devez écrire un code pour lire à partir du flux client – pm100

+0

@ PM100: ouais si intelligent, ne voyez-vous pas que le flux sera fermé à ce moment et Pendant qu'il est ouvert, rien n'est envoyé comme je l'ai expliqué. !!! – Arrrr

+0

personnes Normalement, ne pas utiliser 'CryptoStream' pour deux cours d'eau du réseau de façon, vous utilisez normalement' SslStream' au lieu de fournir une connexion cryptée sur un flux réseau .. –

Répondre

-2

utiliser un MemoryStream intermédiaire

var memstr = new MemoryStream(); 
using (var i = new CryptoStream(memstr.....) 
{ 
    i.Write(some data); 
    var buf = memstr.GetBuffer(); 
    client.GetStream().Write(buf); 
} 
var inp = client.GetStream.Read(..); 
var memstr2 = new MemoryStream(inp); 
using (var o = new CryptoStream(memstr2,...)) 
{ 
    var x = memstr2.Read(); 
} 
+0

semble que vous n'avez même pas compris la question !! – Arrrr

+0

Je comprends la question. Pourquoi ne marche pas mon travail de réponse - je l'avoue ne pas l'essayer, mais je l'ai fait beaucoup de choses semblables times.I d'accord, je suis dans mon unhelpfully flipant premier commentaire – pm100

+0

@If vous prenez même un coup d'oeil à votre code que vous voyez que le flux est disposé déjà le deuxième bloc 'Using' !! et est-ce que vous vous attendez vraiment à ce que cela fonctionne? Je suis curieux de voir comment cela pourrait fonctionner! – Arrrr