AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke C# [C#/.NET] Client-Listener möglich?
Thema durchsuchen
Ansicht
Themen-Optionen

[C#/.NET] Client-Listener möglich?

Ein Thema von Flips · begonnen am 30. Apr 2010 · letzter Beitrag vom 26. Nov 2015
 
Flips

Registriert seit: 17. Feb 2005
Ort: Sankt Wendel
491 Beiträge
 
Delphi 7 Professional
 
#1

[C#/.NET] Client-Listener möglich?

  Alt 30. Apr 2010, 19:23
Hi,

ich hab ein Projekt in C#, das über TCP als Client mit einem Server kommuniziert. Wenn ich dem Server nun beispielsweise ein Kommando sende, dann schickt dieser mir das, was ich mit diesem Kommando anfordere. Quasi das Ping-Pong-Prinzip. Das kann ein riesiger Datensatz sein oder nur die Uhrzeit.
Mit den normalen System.Net.Socket's / TcpClient funktioniert das auch wunderbar, solang bekannt ist, wieviel der Server bei einer bestimmten Anfrage sendet.

Nun gibt es hier ein Problem. Auf ein Request des Clients können auch mal 2-3 Antworten total unterschiedlicher Länge vom Server kommen. Zwischen diesen Antorten kann - der Server ist sehr komplex und hat in Hochzeiten auch viel zu tun - auch durchaus mal eine längere Zeitspanne liegen.


Ich hab es jetzt schon gelöst, nur is die Lösung wirklich sehr quick und verdammt dirty
Aufbau ist wie folgt (Pseudo):
Code:
TcpClient tcp = new TcpClient();
NetworkStream str = tcp.GetStream();
BinaryReader reader = new BinaryReader(str);
BinaryWriter writer = new BinaryWriter(str);

...
byte[] dummy = new byte[1];
String buffer = "";
do
{
   reader.read(dummy,0,1);
   buffer += B2S(dummy); //B2S = Byte[]ToString, eigene Funktion, funktioniert auch
} while (! buffer.contains(ENDKOMMANDO))
Dabei mache ich mir die Eigenschaft zunutze, dass der Server bei jedem Antworten-Paket ein bestimmtes Kommando am Ende sendet. Quasi ein "das wars, dass sind die Daten zu deinem Request". Ich hab deswegen einfach eine Schleife gemacht die solange "empfängt", bis der empfangene String auch das Abbruchkommando enhält.

Allerdings gibts daher auch 100% Auslastung.
Gibt es nicht irgendeine Möglichkeit quasi ein Client-Listener zu machen, vll ne Callback-Funktion die automatisch horcht ob Daten vom Server kommen?

Danke im Voraus und schönen Feiertag
Philipp F.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:28 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz