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?