![]()
Benutzerinformationen überspringen
Dabei seit: 17. Dezember 2011
Wohnort: Cologne City
Frühere Benutzernamen: Anoth3rB0y
Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »Kevin Hombre« (28. Januar 2012, 18:23)
Benutzerinformationen überspringen
Dabei seit: 17. Dezember 2011
Wohnort: Cologne City
Frühere Benutzernamen: Anoth3rB0y
Die Zeichen werden in Hexadezimal versendet.
|
|
Visual Basic Quellcode |
1 2 3 4 5 6 7 8 |
Dim Client As New System.Net.TcpClient Client.Connect("ip", port) If Client.Connected Then Dim Writer As New BinaryWriter(Client.GetStream()) Writer.Write("Hallo!") ' string Writer.Write(DirectCast(123, Byte)) ' byte Writer.Write(1337) ' int32 End If |
|
|
Visual Basic Quellcode |
1 2 3 4 5 6 7 |
Dim Listener As New TcpListener(New IPEndPoint(IPAddress.Any, port)) Listener.Start() Dim RemoteClient As TcpClient = Listener.AcceptTcpClient() Dim Reader As New BinaryReader(RemoteClient.GetStream()) Console.WriteLine("{0} {1} {2}", Reader.ReadString() _ ' string Reader.ReadByte() _ ' byte Reader.ReadInt32()) ' int32 |
Benutzerinformationen überspringen
Dabei seit: 17. Dezember 2011
Wohnort: Cologne City
Frühere Benutzernamen: Anoth3rB0y
|
|
Visual Basic Quellcode |
1 |
Dim Login As String = "276e0" & Channel & "0" & Nick & "0" & Pass & "00" & "46" |
|
|
XML |
1 |
276e004b75736368656c6e004e69636b6e616d650050617373776f72740046 |
Benutzerinformationen überspringen
Dabei seit: 17. Dezember 2011
Wohnort: Cologne City
Frühere Benutzernamen: Anoth3rB0y
D.h. ich muss den Header gar nicht bilden?Konvertier die Hex-Nummern in Bytes und sende diese.
|
|
Visual Basic Quellcode |
1 |
Dim Antwort As String = Reader.ReadString |
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Kevin Hombre« (28. Januar 2012, 18:26)
|
|
Visual Basic Quellcode |
1 2 3 4 5 6 7 |
Dim HexString As String = "276e004b75736368656c6e004e69636b6e616d650050617373776f72740046" Dim ByteList As New List(Of Byte) For i As Integer = 0 To HexString.Length - 1 Step 2 ByteList.Add(byte.Parse(HexString.Substring(i, 2), System.Globalization.NumberStyles.HexNumber)) Next Client.Write(ByteList.ToArray()) Client.Flush() |
Benutzerinformationen überspringen
Dabei seit: 17. Dezember 2011
Wohnort: Cologne City
Frühere Benutzernamen: Anoth3rB0y
|
|
Visual Basic Quellcode |
1 |
Über das Ende des Streams hinaus kann nicht gelesen werden. |
|
|
Visual Basic Quellcode |
1 |
Dim M As String = Reader.ReadString |
|
|
Visual Basic Quellcode |
1 2 3 4 5 |
Dim ResponseBytes As New List(Of Byte) While Reader.BaseStream.DataAvailable ResponseBytes.Add(Reader.ReadByte()) End While Dim ResponseArray() As Byte = ResponseBytes.ToArray() |
Benutzerinformationen überspringen
Dabei seit: 17. Dezember 2011
Wohnort: Cologne City
Frühere Benutzernamen: Anoth3rB0y
Nö, die Response ist einfach kein String.
In deinem Fall werden die ersten 4 Bytes der Response als Integer-Wert genommen, die die Länge des Strings angeben.
Danach wird der String nach dieser Länge ausgelesen.
Wenn nun die Response kein String ist, dann ist das Ergebnis ziemlich undefiniert.
|
|
Visual Basic Quellcode |
1 |
"DataAvailable" ist kein Member von "System.IO.Stream". |
|
|
Visual Basic Quellcode |
1 |
While Reader.BaseStream.DataAvailable
|
|
|
Visual Basic Quellcode |
1 |
While Reader.BaseStream.CanRead
|
|
|
Visual Basic Quellcode |
1 |
Über das Ende des Streams hinaus kann nicht gelesen werden. |
|
|
Visual Basic Quellcode |
1 |
While DirectCast(Reader, NetworkStream).DataAvailable |
Benutzerinformationen überspringen
Dabei seit: 17. Dezember 2011
Wohnort: Cologne City
Frühere Benutzernamen: Anoth3rB0y
Benutzerinformationen überspringen
Dabei seit: 17. Dezember 2011
Wohnort: Cologne City
Frühere Benutzernamen: Anoth3rB0y
Ersetze das While mit Do While.
|
|
Visual Basic Quellcode |
1 2 3 |
Do While DirectCast(Reader.BaseStream, NetworkStream).DataAvailable Responze.Add(Reader.ReadByte()) Loop |
|
|
Visual Basic Quellcode |
1 2 3 |
Do Response.Add(Reader.ReadByte()) ' man schreibt's Response ;) Loop While DirectCast(Reader.BaseStream, NetworkStream).DataAvailable |
Benutzerinformationen überspringen
Dabei seit: 17. Dezember 2011
Wohnort: Cologne City
Frühere Benutzernamen: Anoth3rB0y
Okay.Ja, kleiner Fehler meinerseits.
Do
Response.Add(Reader.ReadByte()) ' man schreibt's Response
Loop While DirectCast(Reader.BaseStream, NetworkStream).DataAvailable
|
|
Visual Basic Quellcode |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Dim Login As String = "276e0" & Channel & "0" & Nick & "0" & Pass & "00" & "46" Dim ByteList As New List(Of Byte) For i As Integer = 0 To Login.Length - 1 Step 2 ByteList.Add(Byte.Parse(Login.Substring(i, 2), System.Globalization.NumberStyles.HexNumber)) Next Writer.Write(ByteList.ToArray()) Writer.Flush() Dim Response As New List(Of Byte) Do Response.Add(Reader.ReadByte()) Loop While DirectCast(Reader.BaseStream, NetworkStream).DataAvailable Dim ResponseArray() As Byte = Response.ToArray() Console.WriteLine(ResponseArray.Length) |
|
|
Visual Basic Quellcode |
1 |
Response.Add(Reader.ReadByte()) |
|
|
Visual Basic Quellcode |
1 |
Über das Ende des Streams hinaus kann nicht gelesen werden. |
Benutzerinformationen überspringen
Dabei seit: 17. Dezember 2011
Wohnort: Cologne City
Frühere Benutzernamen: Anoth3rB0y