Servidor de sockets

Bom dia , estou a trabalhar num projeto no qual preciso de receber informação de diferentes ESP8266 e através de uma aplicação trabalhar esses dados . Estou a pensar em fazer utilizando Sockets ,ja procurei bastante e tenho um código fucnional , mas que apenas recebe informação de um cliente.E queria saber se alguem me pode ajudar a saber que alteração posso fazer a este código de forma a receber dados de mais de uma ESP. O código base da comunicação é o seguinte:

Imports System.Net
Imports System.Net.Sockets
Imports System.IO

Public Class Form1
Public Event MessageReceived(sender As Form1, Data As String)
Dim TCPServer As Socket
Dim TCPListener As TcpListener
Dim listClient As TcpClient
Dim sendMessage As StreamWriter
Dim IP As String
' Public ipserver As IPAddress = IPAddress.Parse("127.0.0.1")
Public IsListening As Boolean = True
Public Event getMessage(ByVal str As String)

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim sendbytes() As Byte = (System.Text.Encoding.ASCII.GetBytes(TextBox1.Text))
TCPServer.Send(sendbytes)
TextBox1.Clear()

End Sub

Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As EventArgs) Handles Timer1.Tick

Try


Dim Rcvbytes(TCPServer.ReceiveBufferSize) As Byte

TCPServer.Receive(Rcvbytes)
TextBox2.Text = (System.Text.Encoding.ASCII.GetString(Rcvbytes))


Catch ex As Exception

End Try

End Sub

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click


End Sub

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
TCPListener = New TcpListener(IPAddress.Any, 97)
TCPListener.Start()

TCPServer = TCPListener.AcceptSocket()
TCPServer.Blocking = False

Timer1.Enabled = True
End Sub

Private Sub Label5_Click(sender As Object, e As EventArgs) Handles Label5.Click

End Sub

Private Sub TextBox2_TextChanged(sender As Object, e As EventArgs) Handles TextBox2.TextChanged

End Sub
Sub New(ByVal forClient As TcpClient)
listClient = forClient
listClient.GetStream.BeginRead(New Byte() {0}, 0, 0, AddressOf ReadAllClient, Nothing)
End Sub
Private Sub ReadAllClient()
Try
RaiseEvent getMessage(New StreamReader(listClient.GetStream).ReadLine)
listClient.GetStream.BeginRead(New Byte() {0}, 0, 0, New AsyncCallback(AddressOf ReadAllClient), Nothing)
Catch ex As Exception

End Try
End Sub
Public Sub Send(ByVal Messsage As String)
sendMessage = New StreamWriter(listClient.GetStream)
sendMessage.WriteLine(Messsage)
sendMessage.Flush()
End Sub
End Class


Obrigado;)
 
Back
Topo