Oke W8
Hier is de complete code:
[CPP]Imports System.Net
Imports System.Net.Sockets
Imports System.Threading
Imports System.Text
Public Class Chatform
Delegate Sub AddMessage(ByRef message As String)
Private userName As String
Private Const port As Integer = 54545
Private Const broadcastAddress As String = "255.255.255.255"
Private receivingClient As UdpClient
Private sendingClient As UdpClient
Private receivingThread As Thread
Private Sub ChatForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
Me.Hide()
Using loginForm As New LoginForm
loginForm.ShowDialog()
If (String.IsNullOrEmpty(loginForm.UserName)) Then
Me.Close()
Else
userName = loginForm.UserName
Me.Show()
End If
tbSend.Focus()
InitializeSender()
InitializeReceiver()
End Using
End Sub
Private Sub InitializeSender()
sendingClient = New UdpClient(broadcastAddress, port)
sendingClient.EnableBroadcast = True
End Sub
Private Sub InitializeReceiver()
receivingClient = New UdpClient(port)
Dim start As ThreadStart = New ThreadStart(AddressOf Receiver)
receivingThread = New Thread(start)
receivingThread.IsBackground = True
receivingThread.Start()
End Sub
Private Sub Receiver()
Dim endPoint As IPEndPoint = New IPEndPoint(IPAddress.Any, port)
Dim messageDelegate As AddMessage = AddressOf MessageReceived
While (True)
Dim data() As Byte
data = receivingClient.Receive(endPoint)
Dim message As String = Encoding.ASCII.GetString(data)
Invoke(messageDelegate, message)
End While
End Sub
Private Sub MessageReceived(ByRef message As String)
rtbChat.Text += message + vbNewLine
End Sub
Public Sub New()
' This call is required by the designer.
InitializeComponent()
AddHandler Me.Load, AddressOf ChatForm_Load
AddHandler btnSend.Click, AddressOf btnSend_Click
End Sub
Private Sub btnSend_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
tbSend.Text = tbSend.Text.TrimEnd()
If (Not String.IsNullOrEmpty(tbSend.Text)) Then
Dim toSend As String = userName + ":" + vbNewLine + tbSend.Text
Dim data() As Byte = Encoding.ASCII.GetBytes(toSend)
sendingClient.Send(data, data.Length)
tbSend.Text = ""
End If
tbSend.Focus()
End Sub
End Class
[/CPP]