myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
   » Plugin für Firefox
   » Plugin für IE
   » Gadget für Windows
» Regeln
» Wie poste ich richtig?
» Datenschutzerklärung
» wbb-FAQ

Mitglieder
» Liste / Suche
» Stadt / Anleitung dazu
» Wer ist wo online?

Angebote
» ASP.NET Webspace
» Bücher
» Zeitschriften
   » dot.net magazin

Ressourcen
» guide to C#
» openbook: Visual C#
» openbook: OO
» MSDN Webcasts
» Search.Net

Team
» Kontakt
» Übersicht
» Wir über uns
» Impressum

» Unsere MiniCity
MiniCity
» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Netzwerktechnologien » [SslStream]: DataAvaialbe(von Networkstream) Ersatz
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

[SslStream]: DataAvaialbe(von Networkstream) Ersatz

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Frokuss
myCSharp.de-Mitglied

Dabei seit: 26.08.2015
Beiträge: 61


Frokuss ist offline

[SslStream]: DataAvaialbe(von Networkstream) Ersatz

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Guten morgen :-)

Ich habe mich gestern fast den ganzen tag mit SslStream herumgeschlagen, komme damit aber leider nicht so ganz zurechte.
Lieder musste ich feststellen, dass es hier im Gegensatz zu Networkstream auch nicht das Attribute DataAvaiable gibt. Meine Suchergebnisse haben auch alle mehr oder minder angedeutet, dass es kein passendes Äquivalent dazu gibt...

Daher meine Frage, gibt es etwas vergleichbares? Wenn ja, was wäre das? Und wenn nein, wie könnte man sich eine Methode basteln, was würde ich dazu brauchen? Würde das überhaupt sinnmachen?

Mein aktuelles vorgehen (Networkstream) ist, dass ich prüfe, ob Daten gesendet werden (DataAvailable), und wenn ja, ich das ganze dann erst anstoße (StreamReader.ReadLine)... Bei dem vorgehen bin ich mir nur nicht mehr sicher, ob dies sinnvoll ist...

Besten Gruß Frokuss
05.12.2017 09:55 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
inflames2k inflames2k ist männlich
myCSharp.de-Poweruser/ Experte

images/avatars/avatar-3407.gif


Dabei seit: 03.01.2010
Beiträge: 2.116
Entwicklungsumgebung: Visual Studio 2010 Express


inflames2k ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Normalerweise prüft man das DataAvailable auf dem TcpClient bzw. dem UdpClient nicht auf dem Stream. Der dient nur dem Lesen und Schreiben der Daten.
05.12.2017 20:41 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
weismat
myCSharp.de-Mitglied

Dabei seit: 20.09.2005
Beiträge: 834
Entwicklungsumgebung: Vistual Studio 2017, VS Code
Herkunft: Frankfurt am Main


weismat ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Normalerweise hat man Lesen in einem eigenen langlaufendem Task.
Das Blockieren spielt da keine große Rolle und nimmt kaum Ressourcen.
Wenn Du mit vielen Daten arbeitest, bekommst Du sogar Probleme, wenn Du nicht schnell genug abnimmst (Stichwort TCP Requeue).

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von weismat am 06.12.2017 11:57.

06.12.2017 11:48 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Frokuss
myCSharp.de-Mitglied

Dabei seit: 26.08.2015
Beiträge: 61

Themenstarter Thema begonnen von Frokuss

Frokuss ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Danke für eure Antworten :-)

Heißt das also, dass ich dass dann wie folgt machen kann:

C#-Code:
NetworkStream ns = new Networkstream(socket);
SslStream sslStream = new SslStream(ns, false);
BinaryReader sr = null;

if(ns.DataAvaiable){
    sr = new BinaryReader(sslStream, Encoding.UTF8);
    //etc...
}

In dem Fall prüfe ich zwar den Networkstream, was somit inflames wiedersprechen sollte... Aber würde doch gehen, oder verstehe ich den Mechanismus falsch? Ich arbeite bei mir leider mir Sockets... dachte wäre klüger..

Gruß Frokuss

EDIT: Wegen der Blockade machen ich mir keine Sorgen, da ich das ganze nur für einen Chat verwende und ich dort eine Sendesperre (Clientseitig) von 1/3 Sekunden habe.

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Frokuss am 06.12.2017 13:58.

06.12.2017 13:56 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
inflames2k inflames2k ist männlich
myCSharp.de-Poweruser/ Experte

images/avatars/avatar-3407.gif


Dabei seit: 03.01.2010
Beiträge: 2.116
Entwicklungsumgebung: Visual Studio 2010 Express


inflames2k ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Ich dachte jetzt eher an:

C#-Code:
TcpClient client...

if(client.Available > 0)
   ...

oder diese Prüfung auf dem Socket selbst. TcpClient.Available representiert den Status von Socket.Availble. NetworkStream.DataAvailable schaut ebenfalls nur auf Socket.Available.
11.12.2017 09:09 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als ein Monat.
Der letzte Beitrag ist älter als ein Monat.
Antwort erstellen


© Copyright 2003-2018 myCSharp.de-Team. Alle Rechte vorbehalten. 24.01.2018 12:56