Hallo,
ich habe ein kleines (?) Problem mit Telnet, wobei nicht einmal Google mir helfen wollte.
Darum habe ich mich (ja, bin neu hier) kurzerhand registriert, um
evtl. auf einen Lösungsansatz zu kommen.
Folgende Situation:
Ich habe aktuell ein Programm ("Programm A"), welches Daten über einen offenen Port bereitstellt.
Diese Daten lassen sich via Telnet auch relativ gut auslesen.
Wird allerdings die Datenmenge zu groß, wird (scheinbar) nur ein Teil der Daten übertragen.
Während der Laufzeit von "Programm A" werden neue Daten gesammelt und ebenfalls
über Telnet "verschickt". Interessanter weise kommen die dann auch wieder an!
Warum nur scheinbar?
Nun. Aktuell lausche ich mit einem TCP-Client den Port ab. Dabei fehlen aber immer ein paar Datensätze. Auch über die Windows-Konsole: telnet <<IP>> <<PORT>>
Hier fehlen ebenfalls immer einige Datensätze.
Greife ich nun allerdings über PuTTY -> Telnet zu und verändere ein paar Einstellungen
(-> "Lines of Scrollback": 200 -> 2000) so werden alle Datensätze angezeigt.
Daraus folgere ich mal, dass ich nur eine bestimmte Datenmenge gesendet bekomme und
in meinem auslesenden Programm quasi den nächsten Datensatz anfordern muss.
FRAGE: Wie bringe ich meinem C#-Programm bei, dass es den nächsten Datensatz holen soll?
CODE:
C#-Code: |
Listener = new TcpClient();
Listener.Connect(Host, Port);
NetworkStream ns = Listener.GetStream();
while (true)
{
StringBuilder sb = new StringBuilder(string.Empty);
while (ns.CanRead && ns.DataAvailable)
{
sb.AppendFormat("{0}", (char)ns.ReadByte());
}
string result = sb.ToString();
Thread.Sleep(100);
}
|