Toon posts:

[VB.Net] Probleem met NetworkStream

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hey,

Ik zit met het volgende. Ben een gedistribueerd systeem aan het ontwikkelen. Hierbij maak ik dus gebruik van meerdere clients en een server. Op deze server staat een tekstfile met daarin 4 regels tekst. Deze regels moeten naar de clients gestuurd worden op het moment dat deze die opvragen. Dat gaat nog goed :)

Het probleem zit echter in het verwerken van de data. Ik stuur die shit over mbv een networkstream. De eerste keer dat de client data ophaalt, haalt ie keurig 1 regel tekst op. Dat is goed. De tweede keer (er staat dus nog data in de tekstfile) haalt hij de overige regels uit de tekstfile in 1 keer op. Staan er dus 10 regels in de tekstfile, dan haalt hij er de 1e keer 1 op en de 2e keer 9.

Weet iemand hoe ik ervoor kan zorgen dat hij elke keer 1 regel ophaalt ? Help alsjeblief, want ik word langzaam gek hier ;(

Verwijderd

Topicstarter
code server :

code:
1
2
3
4
5
6
7
8
9
10
11
                  FileOpen(1, "d:\bla.txt", OpenMode.Input)
                    While Not EOF(1)
                        Regel = LineInput(1)
                        responseString = Regel
                        Console.WriteLine(("Response: " + responseString))
                        sendBytes = Encoding.ASCII.GetBytes(responseString)
                        networkStream.Write(sendBytes, 0, sendBytes.Length)
                        Threading.Thread.Sleep(1)
                    End While
                    FileClose(1)
                    tcpClient.Close()


code client :

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
If networkStream.CanWrite And networkStream.CanRead Then
            Dim sendBytes As [Byte]() = Encoding.ASCII.GetBytes("GetGames")
            networkStream.Write(sendBytes, 0, sendBytes.Length)
            Dim bytes(tcpClient.ReceiveBufferSize) As Byte
            Do
                networkStream.Read(bytes, 0, bytes.Length)
                returndata = Encoding.ASCII.GetString(bytes)
                bytes.Clear(bytes, 0, bytes.Length)
                Dim UiteindelijkeRegel As String
                MsgBox(returndata)
                Thread.Sleep(100)
            Loop While networkStream.DataAvailable
        End If
        tcpClient.Close()
        networkStream.Close()

Verwijderd

Waarom door middel van een Network stream. Is het niet makkelijk om zelf alles in een buffer te gooien en deze te verzenden en met System.Text.Encoding dit weer om te zetten naar text? Vind ik persoonlijk een lekkerderen manier van werken.

Of is dat een probleem... of wil je het gewoon persee zo doen?

Verwijderd

Topicstarter
Schop :)

Iemand een andere manier om strings over te kunnen sturen in VB.Net ? Heb namelijk geen ervaring met VB, en die manier met die NetworkStreams is mijn enigste oplossing tot nu toe.

Iemand ?

  • whoami
  • Registratie: December 2000
  • Laatst online: 15:14
Als je een NetWorkStream hebt, kan je -denk ik- een StreamReader maken op die networkstream, waarmee je dan iedere keer een lijn uitleest dmv ReadLine:

code:
1
2
StreamReader sr = new StreamReader(myNetworkStream);
string s = sr.ReadLine();

C# code

https://fgheysels.github.io/