[C#.NET] Dataset over socket sturen

Pagina: 1
Acties:

  • Facer
  • Registratie: Januari 2002
  • Niet online

Facer

Ken net.....

Topicstarter
Op dit moment ben ik bezig met een programma die informatie vanaf een client moet inlezen (een dataset) en deze weer in ze eigen dataset moet zetten. Hiervoor maak ik gebruik van de volgende code:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
while (true)
{
      NetworkStream stream = client.Socket.GetStream();
      StreamReader reader = new StreamReader(stream);

      if (stream.DataAvailable)
      {
            DataSet ds = new DataSet()
            Console.WriteLine("Begin met XML uitlezen vanaf stream");
            try 
            {
                  ds.ReadXml(reader);
            } 
            catch (Exception e)
            {
                  Console.WriteLine("Fout bij inlezen van XML. Foutmelding: " + e.message());
            }
            Console.WriteLine("XML ingelezen");
      }
}

Alles werkt goed in het programma, behalve als de client zijn data stuurt gebeurt er niks op de server behalve "Begin met XML uitlezen vanaf stream". Maar zodra de client de socket sluit gaat het script door en geeft de melding: "XML ingelezen".

Hierdoor lijkt het erop of de ds.readXml functie blijft wachten. Ben al het gehele weekend wezen zoeken naar een oplossing voor dit probleem alleen de meeste site's zeggen hoe je een XML bestand moet uitlezen vanaf een bestand.

Wie weet waarom de ds.readXML blijft "hangen" en weet er een mogelijke oplossing voor?

[ Voor 2% gewijzigd door Facer op 04-12-2006 12:29 . Reden: Code fout ]


  • B-Man
  • Registratie: Februari 2000
  • Niet online
Ik ben niet tot in detail met de C# libraries bekend, maar het klinkt alsof de server wacht op een newline (flush) van de client, of, wat ook kan: de client heeft de dataset al wel in zijn verzendbuffer zitten, maar nog niet daadwerkelijk verzonden naar de server.

Kortom: is er aan de zendkant de mogelijkheid om een flush uit te voeren?

  • Facer
  • Registratie: Januari 2002
  • Niet online

Facer

Ken net.....

Topicstarter
Ja autoflush() functie staat aan.
Als ik die niet zou gebruiken dan zou je ook niet de tekst: "Begin met XML uitlezen vanaf stream" zien.Hierdoor weet ik dat de client zeker data verstuurt.

  • whoami
  • Registratie: December 2000
  • Laatst online: 18:04
Je gaat iedere keer een nieuwe DataSet creeëren in je loop, lijkt me niet dat dit de bedoeling is ?

https://fgheysels.github.io/


  • Facer
  • Registratie: Januari 2002
  • Niet online

Facer

Ken net.....

Topicstarter
whoami schreef op maandag 04 december 2006 @ 12:18:
Je gaat iedere keer een nieuwe DataSet creeëren in je loop, lijkt me niet dat dit de bedoeling is ?
Het was idd een fout in de volgorde van de code, er staat orgineel meer code in maar dit is de code die belangrijk is :)

  • MTWZZ
  • Registratie: Mei 2000
  • Laatst online: 13-08-2021

MTWZZ

One life, live it!

Wat gebeurt er als je eerst de data inleest in een byte[] en vervolgens door de DataSet in laat lezen?
Komt de data dan wel binnen? Eventueel zou je nog kunnen kijken wat er over de lijn gaat met Wireshark oid

Nu met Land Rover Series 3 en Defender 90


  • Facer
  • Registratie: Januari 2002
  • Niet online

Facer

Ken net.....

Topicstarter
Als ik hem uitleest met reader.ReadLine() dan laat die ook alle data zien die overgestuurd wordt. Zal vanavond proberen om hem eerst in byte[] in te lezen
Pagina: 1