Hallo,
ich hoffe mir kann jemand weiter helfen. Ich hab untenstehenden Code im Internet gefunden und möchte diesen gerne weiter ausbauen aber bevor ich das machen kann muss daran etwas gebastelt werden. Das Problem was ich habe ist das die Ausgabe dreimal wieder gegeben wird. Wenn man sich den Code kopiert und 2 Textfelde und eine Button dazu macht und es dann testet passiert folgendes. Gibt man in dem Textfeld txtMensaje etwas ein, drückt dann auf den Button cmdEnviar taucht im zweiten Textfeld txtDatosRecibidos die Eingabe dreimal auf. Was müsste am Code verändert werden damit die Aufgabe aber nur einmal zutrifft. Kann mir da bitte jemand weiter helfen.
Pösö: Die Namensvergabe der Textfelden stamme nicht aus meiner Feder. Wie schon gesagt, ein Fund aus dem Internet
ich hoffe mir kann jemand weiter helfen. Ich hab untenstehenden Code im Internet gefunden und möchte diesen gerne weiter ausbauen aber bevor ich das machen kann muss daran etwas gebastelt werden. Das Problem was ich habe ist das die Ausgabe dreimal wieder gegeben wird. Wenn man sich den Code kopiert und 2 Textfelde und eine Button dazu macht und es dann testet passiert folgendes. Gibt man in dem Textfeld txtMensaje etwas ein, drückt dann auf den Button cmdEnviar taucht im zweiten Textfeld txtDatosRecibidos die Eingabe dreimal auf. Was müsste am Code verändert werden damit die Aufgabe aber nur einmal zutrifft. Kann mir da bitte jemand weiter helfen.
Code:
Imports System.Net Imports System.Net.Sockets Imports System.Text Imports System.Threading Public Class frmMain Dim ElSocket As New Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp) Dim HiloRecibir As Thread Dim Saliendo As Boolean = False Dim DireccIP As String, ContenidoMensaje As String Private Sub txtMensaje_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtMensaje.TextChanged cmdEnviar.Enabled = (txtMensaje.TextLength > 0) End Sub Private Sub cmdEnviar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdEnviar.Click Dim DirecciónDestino As New IPEndPoint(IPAddress.Broadcast, 20145) Dim DatosBytes As Byte() = Encoding.Default.GetBytes(txtMensaje.Text) ElSocket.SendTo(DatosBytes, DatosBytes.Length, SocketFlags.None, DirecciónDestino) txtMensaje.Clear() txtMensaje.Focus() End Sub Private Sub frmMain_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing Saliendo = True ElSocket.Close() HiloRecibir.Abort() End Sub Private Sub frmMain_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load ElSocket.Bind(New IPEndPoint(IPAddress.Any, 20145)) ElSocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, True) HiloRecibir = New Thread(AddressOf RecibirDatos) HiloRecibir.Start() End Sub Private Sub RecibirDatos() Do Dim LaIPRemota As New IPEndPoint(IPAddress.Any, 0) Dim IPRecibida As EndPoint = CType(LaIPRemota, EndPoint) Dim RecibirBytes(255) As Byte Dim Datos As String = "" Try ElSocket.ReceiveFrom(RecibirBytes, RecibirBytes.Length, SocketFlags.None, IPRecibida) Datos = Encoding.Default.GetString(RecibirBytes) Catch ex As SocketException If ex.ErrorCode = 10040 Then Datos &= "[truncado]" Else MsgBox("Error '" & ex.ErrorCode.ToString & "' " & ex.Message, MsgBoxStyle.Critical, "Error al recibir datos") End If End Try LaIPRemota = CType(IPRecibida, IPEndPoint) DireccIP = LaIPRemota.Address.ToString ContenidoMensaje = Datos.ToString txtDatosRecibidos.Invoke(New EventHandler(AddressOf ActualizarTextoMensaje)) Loop Until Saliendo End Sub Private Sub txtDatosRecibidos_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtDatosRecibidos.TextChanged txtDatosRecibidos.SelectionStart = txtDatosRecibidos.TextLength txtDatosRecibidos.ScrollToCaret() End Sub Protected Sub ActualizarTextoMensaje(ByVal sender As Object, ByVal e As System.EventArgs) If txtDatosRecibidos.TextLength = 0 Then txtDatosRecibidos.Text = DireccIP & ">" & ContenidoMensaje Else txtDatosRecibidos.Text &= vbCrLf & DireccIP & ">" & ContenidoMensaje End If End Sub End Class
Comment