2009-03-27 14 views
3

Mir Migration C# -Code aus einem Network zu SslStream verwenden, aber wo ich stream.DataAvailable verwende ich den Fehler:SslStream.DataAvailable keine gültige Funktion

Error 1 'System.Net.Security.SslStream' does not contain a definition for 'DataAvailable' and no extension method 'DataAvailable' accepting a first argument of type 'System.Net.Security.SslStream' could be found (are you missing a using directive or an assembly reference?)

jetzt meine lokale MSDN Kopie enthält nicht DataAvailable als Mitglied von SslStream jedoch http://msdn.microsoft.com/en-us/library/dd170317.aspx sagt, es hat das Mitglied DataAvailable. Hier ist eine Kopie meines Codes.

using System; 
using System.Collections; 
using System.Collections.Generic; 
using System.Net; 
using System.Net.Sockets; 
using System.Net.Security; 
using System.Security.Authentication; 
using System.Security.Cryptography.X509Certificates; 
using System.IO; 

namespace Node 
{ 

    public static class SSLCommunicator 
    { 
    static TcpClient client = null; 
    static SslStream stream = null; 
    static List<byte> networkStreamInput = new List<byte>(); 
    public static void connect(string server, Int32 port) 
    { 
     try 
     { 
      client = new TcpClient(server, port); 
      stream = new SslStream(client.GetStream(),false); 
    ... 
    ... 
    ... 
    public static List<DataBlock> getServerInput() 
    { 
     List<DataBlock> ret = new List<DataBlock>(); 
     try 
     { 
     //check to see if stream is readable. 
     if (stream.CanRead) 
     { 
     //Check to see if there is data available. 
     if (stream.DataAvailable) 
     { 
      byte[] readBuffer = new byte[1024]; 
      int numberOfBytesRead = 0; 
      //while data is available buffer the data. 
      do 
      { 
      numberOfBytesRead = stream.Read(readBuffer, 0, readBuffer.Length); 
      byte[] tmp = new byte[numberOfBytesRead]; 
      Array.Copy(readBuffer, tmp, numberOfBytesRead); 
      networkStreamInput.AddRange(tmp); 
      } while (stream.DataAvailable); 
    ... 

Auch wenn Sie eine bessere Art und Weise haben meine Ausgabe des Stroms zu erhalten bei einem verwalteten Array (es wird einige Parsing auf sie später im Code erfolgen) Ich würde die Hilfe liebt. Ich benutze Visual Studio 2008

--EDIT Ich habe gerade festgestellt, dass ich mit dem eingebetteten SDK verbunden ist, das ist kein eingebettetes System, also wie sehe ich, ob Daten im normalen .net SDK verfügbar sind?

Antwort

2

Die Seite, die Sie betrachten, ist für das .NET Micro Framework.

Gemäß this page for .Net 2.0 und this page for .Net 3.5 gibt es keine Eigenschaft DataAvailable auf SSLStream.

Edit: Kannst du nicht einfach Read() anrufen und sehen, ob du etwas zurückbekommst? Ich denke nicht, dass das blockieren wird.

+0

Nein, es ruiniert alles. Siehe: http://social.msdn.microsoft.com/Forums/en-US/f4c3d019-aecd-4fc6-9dea-680f04faa900/sslstreamread-returns-invalid-data – Ashe

Verwandte Themen