vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Schützen Sie Ihre Software vor Software-Piraterie - mit sevLock 1.0 DLL!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Thread wird dreimal ausgegeben 
Autor: HellDoG
Datum: 24.03.07 15:31

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.
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
Pösö: Die Namensvergabe der Textfelden stamme nicht aus meiner Feder. Wie schon gesagt, ein Fund aus dem Internet.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Thread wird dreimal ausgegeben765HellDoG24.03.07 15:31
Re: Thread wird dreimal ausgegeben566Drapondur24.03.07 17:26
Re: Thread wird dreimal ausgegeben502HellDoG24.03.07 18:08

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel