1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151
| Imports System.Net
Imports System.Net.Sockets
Imports System.Text
Imports System.IO
Public Class Module1
Public Shared port As Integer = 65535
Public Shared adresse_ip As String = "192.168.10.200"
Public Delegate Sub Ajout(ByVal Valeur As String) 'declare un délégué pour insérer des datas dans le listbox
Public Shared serverinfo As IPEndPoint = Nothing
Public Shared counter As Integer 'Compteur pour le client connecté
Public Shared incrementation As Integer = 0
Private Sub BackgroundWorker1_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
Dim ipAddress As IPAddress = Dns.GetHostEntry(adresse_ip).AddressList(0)
Dim serverSocket As New TcpListener(ipAddress, port)
Dim clientSocket As TcpClient = Nothing
Dim date_socket As Date
Dim ip_socket_connecté As String
Try
serverSocket.Start()
Invoke(New Ajout(AddressOf msg), New Object() {Date.Now & " : Serveur démarré. Port " + port.ToString + " - " + ipAddress.ToString})
counter = 0
While (True)
counter += 1
clientSocket = serverSocket.AcceptTcpClient()
Invoke(New Ajout(AddressOf msg), New Object() {Date.Now & " : Client No: " + Convert.ToString(counter) + " Démarré ! " + " IP : " + clientSocket.Client.RemoteEndPoint.ToString})
Console.WriteLine(" : Client No: " + Convert.ToString(counter) + " Démarré ! " + " IP : " + clientSocket.Client.RemoteEndPoint.ToString)
date_socket = Date.Now 'Date
ip_socket_connecté = clientSocket.Client.RemoteEndPoint.ToString 'IP
Dim client As New handleClinet
client.startClient(clientSocket, Convert.ToString(counter), ip_socket_connecté, date_socket)
End While
'clientSocket.Close()
'serverSocket.Stop()
Invoke(New Ajout(AddressOf msg), New Object() {"exit"})
Catch ex As IOException
Console.WriteLine(Date.Now.Date & " 000-IOEXCEPTION : Erreur : " & ex.Message)
Catch ex As SocketException
Console.WriteLine(Date.Now.Date & " 000-SOCKET : Erreur : " & ex.Message)
End Try
End Sub
Public Class handleClinet
Dim clientSocket As TcpClient
Shared clNo As String 'Numéro du client
Shared clIP As String 'Adresse ip du client connecté
Shared clDate As Date 'Date et heure de la connection du client
Shared chaine_SYNCHEADER As String = ""
Shared chaine_SYNCID As String = ""
Shared CHAINE_UNITID As String = ""
Public Sub startClient(ByVal inClientSocket As TcpClient, ByVal clineNo As String, ByVal clineIP As String, ByVal clineDate As Date)
Me.clientSocket = inClientSocket
handleClinet.clNo = clineNo 'Numéro du client
handleClinet.clIP = clineIP 'Adresse IP du client connecté
handleClinet.clDate = clineDate 'Date du client connecté
Dim ctThread As Threading.Thread = New Threading.Thread(AddressOf ecoute)
ctThread.Start()
End Sub
Public Sub ecoute()
Dim bytes(clientSocket.ReceiveBufferSize) As Byte
'Dim bytes(10024) As Byte
Dim networkStream As NetworkStream = clientSocket.GetStream()
Dim valeur_true As Boolean = True
While (clientSocket.Connected)
Try
networkStream.Read(bytes, 0, CInt(clientSocket.ReceiveBufferSize))
'On dissocie le header pour déterminer le boitier et son ID
Dim sendbytes As [Byte]() = bytes
chaine_SYNCHEADER = ""
chaine_SYNCID = ""
CHAINE_UNITID = ""
chaine_SYNCHEADER = Hex(bytes(1)) & Hex(bytes(0))
chaine_SYNCID = Hex(bytes(3)) & Hex(bytes(2))
CHAINE_UNITID = Hex(bytes(7)) & Hex(bytes(6)) & Hex(bytes(5)) & Hex(bytes(4))
Select Case chaine_SYNCHEADER
Case "AB65"
networkStream.Write(sendbytes, 0, 8)
header_lu = True
Dim chaine_Serveur As String = ""
'Console.WriteLine(Date.Now & " " & HexaToDec(CHAINE_UNITID))
End Select
Catch ex As IOException
Console.WriteLine("700 : " & ex.Message)
End Try
Try
If clientSocket.Connected = False Then
Console.WriteLine(Date.Now & " Clientsocket fermé, exit sub")
Exit Sub
End If
Dim networkStream2 As NetworkStream = clientSocket.GetStream()
Dim bytes2(clientSocket.ReceiveBufferSize) As Byte
If networkStream2.CanRead Then
Do
networkStream2.Read(bytes2, 0, CInt(clientSocket.ReceiveBufferSize))
Dim chaine_brute As String = ""
chaine_brute = Encoding.ASCII.GetString(bytes2)
chaine_brute = chaine_brute.Trim(Chr(&HA))
chaine_brute = chaine_brute.Trim(Chr(&HD))
Dim tabstring() As String = Split(chaine_brute, Chr(13))
'Traitement des données
Loop While networkStream2.DataAvailable
Else
Console.WriteLine("Lecture impossible du networkstream2 !")
End If
Catch ex As IOException
Console.WriteLine("876 : " & ex.Message)
Catch ex As SocketException
Console.WriteLine("880 : " & ex.Message)
End Try
End While
End Sub
End Class
End Class |
Partager