4 Stimmen

SslStream.DataAvailable ist keine gültige Funktion

Ich migriere C#-Code von der Verwendung eines NetworkStream zu SSLStream, jedoch, wo ich stream.DataAvailable verwenden ich den Fehler erhalten:

Fehler 1 'System.Net.Security.SslStream' enthält keine Definition für 'DataAvailable' und keine Erweiterung Methode 'DataAvailable', die ein erstes Argument vom Typ 'System.Net.Security.SslStream' akzeptiert, konnte gefunden werden (vermissen Sie eine using Direktive oder ein Assembly-Verweis?)

meine lokale MSDN-Kopie enthält DataAvailable jedoch nicht als Mitglied von SslStream http://msdn.microsoft.com/en-us/library/dd170317.aspx sagt, dass es das Mitglied DataAvailable hat. 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 einen besseren Weg, um meine Ausgabe des Streams in ein verwaltetes Array zu erhalten (es wird einige Parsing auf es später im Code getan werden) Ich würde die Hilfe lieben. Ich bin mit Visual Studio 2008

--EDIT Ich habe gerade bemerkt, dass ich auf das Embedded SDK verlinkt habe, dies ist kein Embedded System, wie kann ich also sehen, ob Daten im normalen .net SDK verfügbar sind?

2voto

Moose Punkte 5214

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

Nach Angaben von diese Seite für .Net 2.0 y diese Seite für .Net 3.5 gibt es keine DataAvailable-Eigenschaft für SSLStream.

Bearbeiten: Kannst du nicht einfach Read() aufrufen und sehen, ob du etwas zurückbekommst? ich glaube nicht, dass dies blockieren wird.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X