Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

C-Sharp - NetworkStream - Wie auf vorhandene Daten prüfen?

Frage Entwicklung C und C++

Mitglied: mabue88

mabue88 (Level 2) - Jetzt verbinden

30.07.2014 um 08:52 Uhr, 1160 Aufrufe, 4 Kommentare

Hallo,

ich habe einen TCP-Client in C# programmiert. Prinzipiell wartet er nur auf Daten vom Server und verarbeitet sie.
Da der NetworkStream kein Event besitzt, das ausgelöst wird, wenn Daten empfangen wurden prüfe ich zyklisch mit einem Timer ob Daten vorliegen.

Zum Test der Verbindung wird ein Ping-Pong-Verfahren verwendet. Grundsätzlich funktioniert der Client. Ab und zu wird das Pong, die Antwort vom Server, jedoch nicht vom Client empfangen, obwohl die Verbindung noch besteht. Der Client geht dann davon aus, dass die Verbindung unterbrochen wurde und versucht entsprechend eine neue Verbindung aufzubauen.

Ich vermute, dass das Problem bei meinem Datenempfang mit dem Timer liegt.

Welche Alternativen gibt es zum Datenempfang?

Danke
mabue
Mitglied: colinardo
30.07.2014 um 09:17 Uhr
Moin mabue,
eine Möglichkeit ist die Nutzung der asynchronen Funktionen BeginRead und EndRead die eine Callback Procedure aufrufen sobald Daten empfangen werden.
Wie du das ganze in einem Loop realisierst, kannst du an einem Beispiel hier nachlesen:
http://social.msdn.microsoft.com/Forums/en-US/d6156c86-6efc-429a-9ba5-5 ...

Grüße Uwe
Bitte warten ..
Mitglied: mabue88
30.07.2014 um 11:00 Uhr
Hallo Uwe,

danke für deine Antwort.

Die Grundzügen von BeginRead und EndRead funktionieren bei mir bereits.
Macht es Sinn anstelle von "Connect()" ebenfalls mit dem Verbindungssteuerung auf ein asynchrones Verfahren umzustellen?

Im Netz konnte ich bis jetzt keine Beschreibung finden, die mir erklärt, was passiert, wenn nach dem Aufruf von "BeginConnect" keine Verbindung zum Server aufgebaut werden kann...

Gruss
mabue
Bitte warten ..
Mitglied: colinardo
30.07.2014 um 11:04 Uhr
Zitat von mabue88:
Macht es Sinn anstelle von "Connect()" ebenfalls mit dem Verbindungssteuerung auf ein asynchrones Verfahren
umzustellen?
Ist immer eine Frage wie das Programm aufgebaut ist.
Im Netz konnte ich bis jetzt keine Beschreibung finden, die mir erklärt, was passiert, wenn nach dem Aufruf von "BeginConnect" keine Verbindung zum Server aufgebaut werden kann...
http://msdn.microsoft.com/de-de/library/tad07yt6%28v=vs.110%29.aspx
Unten Ausnahmen stehen die entsprechenden Exceptions die auftreten falls keine Verbindung zustande kommt. Diese Situation kannst du also mit Try..Catch abfangen, feddich

Grüße Uwe
Bitte warten ..
Mitglied: mabue88
30.07.2014 um 11:09 Uhr
Perfekt!

Danke!

Wenn ich den Code einigermaßen fertig habe füge ich ihn diesem Thread noch hinzu. Vielleicht können andere dann was damit anfangen.

Gruss
mabue
Bitte warten ..
Ähnliche Inhalte
Visual Studio
Prüfen ob ein Komma in textbox enthalten ist c sharp (7)

Frage von derCreeper zum Thema Visual Studio ...

C und C++
C-Sharp Daten von PHP lokal speichern (3)

Frage von Yanmai zum Thema C und C ...

C und C++
gelöst "Blassheit" bei einem label in C-sharp (5)

Frage von derCreeper zum Thema C und C ...

C und C++
gelöst Ist "C Sharp" das Richtige für mich, als Neuling (11)

Frage von BlueLines zum Thema C und C ...

Neue Wissensbeiträge
Windows 10

Neues Win10 Funktionsupdate verbuggt RemoteApp

Information von thomasreischer zum Thema Windows 10 ...

Microsoft

Die neuen RSAT-Tools für Win10 1709 sind da

(2)

Information von DerWoWusste zum Thema Microsoft ...

Humor (lol)

Wohnt jemand in Belgien und kann nicht mehr ruhig ausschlafen?

(6)

Information von LordGurke zum Thema Humor (lol) ...

Heiß diskutierte Inhalte
Router & Routing
Allnet - VDSL2 Modem - SFP (mini-GBIC) (20)

Frage von Dobby zum Thema Router & Routing ...

Voice over IP
DeutschlandLAN IP Voice Data M Premium, Erfahrung mit Faxgeräte? (17)

Frage von liquidbase zum Thema Voice over IP ...