vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
HILFE beim Suchen eines Fehlers... 
Autor: IIIIIChrisIIIII
Datum: 20.09.07 13:39

Hallo liebe VBler,

ich sitze schon seit Stunden an einen Code zur (verschlüsselten) Übertragung von Daten mittels TCP/IP.

So sieht der Code des Clients (prinzipiell) aus:
_NetStream as Io.Stream = new NetworkStream(Sock)  'Einfach nur ein 
' NetworkStream-Exemplar erstellen, dass einen verbundenen Socket besitzt
 
if EncryptionNeeded then
   _NetStream = new CryptoStream(_NetStream, AES.CreateEncryptor, _
     CryptoStreamMode.Write) 'AES ist ein Rijndael- Exemplar
end if
 
 
'Senden von Daten
Dim W As New System.IO.BinaryWriter(_NetStream, System.Text.Encoding.Unicode)
W.Write(_Stream.Length) '_Stream ist ein Stream, der die zu sendenden Bytes 
' enthält (Meistens ein MemoryStream
W.Flush()
 
 'Alle Daten kopieren
Dim B(8191) As Byte
Do
       Dim RB As Integer = _Stream.Read(B, 0, B.Length) '_Stream ist ein 
       ' Stream, der die zu sendenden Bytes enthält (Meistens ein MemoryStream
       If RB = 0 Then Exit Do
        _NetStream.Write(B, 0, RB)
Loop
So sieht der Code des Servers (prinzipiell) aus:
_NetStream as Io.Stream = new NetworkStream(Sock)  'Einfach nur ein 
' NetworkStream-Exemplar erstellen, dass einen verbundenen Socket besitzt
 
if EncryptionNeeded then
   _NetStream = new CryptoStream(_NetStream, AES.CreateDecryptor, _
     CryptoStreamMode.Read) 'AES ist ein Rijndael- Exemplar
end if
 
 
'Empfangen von Daten
Dim R As New System.IO.BinaryReader(_NetStream, System.Text.Encoding.Unicode)
Dim DataLength As Long = R.ReadInt64
 
'Kopieren der Bytes aus dem NetStream, in den Stream (_Stream), der die zu 
' empfangenen Bytes speichert z.B. MemoryStream oder FileStream
Dim B(8191) As Byte
Do
      Dim RB As Integer = R.Read(B, 0, CInt(IIf(DataLength > B.Length, _
        B.Length, DataLength)))
      DataLength -= RB
       _Stream.Write(B, 0, RB)
 
Loop Until DataLength = 0
Das Senden von unverschlüsselten Daten (EncryptionNeeded = False) funktioniert einwandfrei. Sobald ich aber die EncryptionNeeded - Variable auf True setzte funktioniert der Empfang nicht mehr. Die Länge der anzukommenden Daten (DataLength - Variable des Servers) wird richtig ausgelesen. Allerdings fehlen dem Stream, aus dem die Daten ausgelesen werden scheinbar ein paar Bytes (also DataLength > _NetStream.Length) und somit blockiert der Server beim Auslesen.
Da TCP garantiert, dass alle Daten ankommen (in der richtigen Reihenfolge) und der Client auf jeden Fall alle Daten in den "Sende" Stream schreibt, weiß ich einfach nicht mehr weiter.

Würde mich über JEDE Hilfe riesig freuen!
Vielen Dank schon alleine fürs Lesen.
Gruß,
Chris
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
HILFE beim Suchen eines Fehlers...651IIIIIChrisIIIII20.09.07 13:39
Re: HILFE beim Suchen eines Fehlers...376Melkor20.09.07 14:14
Re: HILFE beim Suchen eines Fehlers...374IIIIIChrisIIIII20.09.07 14:37
Re: HILFE beim Suchen eines Fehlers...357Melkor20.09.07 15:02
Re: HILFE beim Suchen eines Fehlers...386IIIIIChrisIIIII23.09.07 15:44
Re: HILFE beim Suchen eines Fehlers...373Melkor23.09.07 17:23

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel