Imports System.Net.Sockets
Imports System.Text
Imports System.Threading
Imports client.Network.Messages.Connexion
Public Class Form1
Public Shared _socket As New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
Public Shared _socket_Jeu As New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
Dim buffer(8191) As Byte
Dim Ecoute_Connexion_thread As New Thread(New ThreadStart(AddressOf Ecoute_Connexion))
Dim Ecoute_Jeu_thread As New Thread(New ThreadStart(AddressOf Ecoute_Jeu))
Sub Ecoute_Connexion()
While _socket.Connected
Dim i = _socket.Receive(buffer)
Dim data(i - 1) As Byte
Array.Copy(buffer, data, i)
parsing(data)
End While
End Sub
Sub Ecoute_Jeu()
While _socket_Jeu.Connected
Dim i = _socket_Jeu.Receive(buffer)
Dim data(i - 1) As Byte
Array.Copy(buffer, data, i)
parsing(data)
End While
End Sub
Dim Data_Out(0) As Byte
Dim Waiting As Integer
Public Sub parsing(ByVal data() As Byte)
Try
Dim index As Integer
Dim id_and_length As UShort
Dim packet_id As UShort
Dim packet_length_of As Byte
Dim packet_length As Integer
Dim Packet_Start As Integer
Dim Packet_End As Integer
If Waiting > 1 Then
Dim data_temps(data.Length + Data_Out.Length - 1) As Byte
Array.Copy(Data_Out, 0, data_temps, 0, Data_Out.Length)
Array.Copy(data, 0, data_temps, Data_Out.Length, data.Length)
data = data_temps
End If
Do Until index = data.Length
Packet_Start = index
id_and_length = data(index) * 256 + data(index + 1)
packet_length_of = id_and_length And 3
packet_id = id_and_length >> 2
index += 2 + packet_length_of
Select Case packet_length_of
Case 0
packet_length = 0
Case 1
packet_length = data(index - 1)
Case 2
packet_length = 256 * data(index - 2) + data(index - 1)
Case 3
packet_length = 65536 * data(index - 3) + 256 * data(index - 2) + data(index - 1)
End Select
If index + packet_length > data.Length Then
Waiting = packet_length + index - Packet_Start
ReDim Data_Out(data.Length - Packet_Start - 1)
Array.Copy(data, Packet_Start, Data_Out, 0, data.Length - Packet_Start)
Exit Sub
End If
Console.WriteLine("recu : id = " & packet_id & " taille = " & packet_length)
Dim packet(0) As Byte
If packet_length > 0 Then
ReDim packet(packet_length - 1)
Array.Copy(data, index, packet, 0, packet_length)
End If
index += packet_length
Packet_End = index
If Packet_End = data.Length Then
Waiting = 0
ReDim Data_Out(0)
End If
Loop
Catch e As Exception
Console.WriteLine("parsing() " & e.TargetSite.Name & " -> " & e.Message)
End Try
End Sub
Private Sub connexion_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles connexion.Click
_socket.Connect("213.248.126.180", 5555)
Ecoute_Connexion_thread.Start()
While Ecoute_Connexion_thread.IsAlive
Application.DoEvents()
End While
End Sub
Dim ip As String
Dim Ticket As String
Dim Suivre As Boolean
Dim PassBot As String = "ano"
Dim Chef As String = " "
Dim ID_Chef As Int32
Dim ID_Map As UInteger
Dim ID_Cell As UInteger
Private Sub DataCheck(ByVal ID As Integer, ByVal PacketData As Dofus.DofusReader)
Dim ID_Message As Object = Nothing
Select Case ID
Case 0
Beep()
Case 1
Beep()
Case 3
ID_Message = New Messages.Connection.HelloConnectMessage
ID_Message.Deserialize(PacketData)
Dim key = ID_Message.key
Dim Account As String = NDC.Text
Dim Password As String = MDP.Text
Dim EncryptedPassword As String = RSACrypt.Encrypt(key & Password)
Dim Version_ As New Types.Version.Version
Version_.initVersion(2, 5, 3, 54146, 1, 0)
Dim certificate As New List(Of TrustCertificate)
Dim Message As New Messages.Connection.IdentificationMessage
Message.initIdentificationMessage(Version_, Account, EncryptedPassword, certificate, True)
Message.pack()
End Select
End Sub
End Class