Announcement

Collapse
No announcement yet.

ByteArray zu String - Problem mit der Länge !

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • ByteArray zu String - Problem mit der Länge !

    ch habe ein kleines aber lästiges Problem und da ich mich erst seit kurzem mit Netzwerkprogrammierung beschäftige, komme ich deswegen derzeit auch nicht weiter.
    Und zwar versende ich einen String mithilfe der System.Net.Sockets.TcpClient() an einen Server der das ganze mithilfe der TcpListener Klasse entgegen nimmt.
    Der Code sieht wie folgt aus:

    Client:
    Code:
    Dim tcpClient As New System.Net.Sockets.TcpClient()
    tcpClient.Connect(server, 8000)
    Dim networkStream As NetworkStream = tcpClient.GetStream()
    ' Sende Logindaten
    Dim password_md5 = MD5StringZuHash(password)
    Dim sendstring As String = "createaccount;" & username & ";" & password_md5 & ";" & email
    
    ' DEBUG
    MsgBox(sendstring.Length())
    
    Dim sendBytes As [Byte]() = Encoding.ASCII.GetBytes(sendstring)
    networkStream.Write(sendBytes, 0, sendBytes.Length)
    Server:
    Code:
    ' Listener initialiseren
    Const portNumber As Integer = 8000
    Dim tcpListener As New TcpListener(portNumber)
    
    ' Listener starten
    tcpListener.Start()
    
    Dim tcpClient As TcpClient = tcpListener.AcceptTcpClient()
    If tcpClient.Connected = True Then
    Dim networkStream As NetworkStream = tcpClient.GetStream()
    Do Until tcpClient.Connected = False
    ' Buffer für empfangende Daten
    Dim bytes(tcpClient.ReceiveBufferSize) As Byte
    Dim clientdata As String
    
    ' Variablen für verarbeitete Client-Daten
    Dim clientdata_arr() As String
    Dim clientdata_header As String
    Dim responseString As String
    
    ' Daten aus Byte Array lesen
    networkStream.Read(bytes, 0, CInt(tcpClient.ReceiveBufferSize))
    clientdata = Encoding.ASCII.GetString(bytes)
    ....
    ....
    ....
    Das Problem ist jetzt das ein String vom Client laut sendstring.Length() z.b 60 Zeichen besitzt, auf dem Server hat die Variable clientdata in der jetzt dieser String genau so groß sein sollte aber eine Länge von 8193.

    Bin ziemlich ratlos ...

    Bitte um Hilfe

  • #2
    Hallo,

    für

    Code:
    
    Dim tcpListener AsNew Net.Sockets.TcpListener(portNumber)
    
    gibt es einen Microsoft-Link:

    http://go.microsoft.com/fwlink/?linkid=14202

    Gruß
    Christian

    Comment


    • #3
      Hallo phpdev,

      ich habe deinen Fehler gefunden und poste dir eine variante der Lösung.


      Code:
      ' Listener initialiseren
      Const portNumber As Integer = 8000
      Dim tcpListener As New TcpListener(portNumber)
      
      ' Listener starten
      tcpListener.Start()
      
      Dim tcpClient As TcpClient = tcpListener.AcceptTcpClient()
      If tcpClient.Connected = True Then
      Dim networkStream As NetworkStream = tcpClient.GetStream()
      Do Until tcpClient.Connected = False
      ' Buffer für empfangende Daten
      Dim bytes(tcpClient.ReceiveBufferSize) As Byte
      Dim clientdata As String
      
      ' Variablen für verarbeitete Client-Daten
      Dim clientdata_arr() As String
      Dim clientdata_header As String
      Dim responseString As String
      
      ' Daten aus Byte Array lesen
      Dim i as Int32 = networkStream.Read(bytes, 0, bytes.Length)
      clientdata = Encoding.ASCII.GetString(bytes, 0, i)
      ....
      ....
      ....
      Dirk
      Zuletzt editiert von chetti; 29.07.2008, 10:15.

      Comment

      Working...
      X