Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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, 1139 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
VB for Applications
Von einer Exceltabelle Daten in eine Informix Datenbank übertragen (4)

Frage von Voosjey zum Thema VB for Applications ...

Windows Server
gelöst LDAP Daten anderer Domain abrufen (3)

Frage von it4baer zum Thema Windows Server ...

Neue Wissensbeiträge
Heiß diskutierte Inhalte
iOS
16 iPads zentrall verwalten (18)

Frage von simonlohr zum Thema iOS ...

Viren und Trojaner
Ransomware .nm4 (15)

Frage von Zyklo92 zum Thema Viren und Trojaner ...

Windows 7
Freeware MSI Tool (13)

Frage von uridium69 zum Thema Windows 7 ...

Microsoft Office
gelöst VBA Excel Problem mit UserForm, ListBox und TextBox (12)

Frage von abuelito zum Thema Microsoft Office ...