Hola.
Encontre la soluccion al siguiente ejemplo:
MsgBox(WinsockServer.ObtenerDatos(IDTerminal))
End Sub Si te fijas los eventos del sock siempre estan con MsgBox si quieres cargar los datos en un TextBox se dispara un error, porque estas haciendo una llamada insegura para subprocesos.
Esto no funciona:
Private Sub WinsockServer_DatosRecibidos(ByVal IDTerminal As System.Net.IPEndPoint) Handles WinsockServer.DatosRecibidos
'MsgBox("Nuevo mensaje desde IP= " & IDTerminal.Port) TextBox1.Text = WinsocServer.ObtenerDatos(IDTerminal))
End Sub Eh aqui la soluccion para este problema. es de MSDN de VB2005 Express
ms-help://MS.VSExpressCC.v80/MS.NETFramework.v20.es/dv_fxmclictl/html/138f38b6-1099-4fd5-910c-390b41cbad35.htm
Y lo de abajo es lo que modifique:
Y lo de abajo es lo que modifique:
Public
Class
Form1 Inherits System.Windows.Forms.Form Delegate Sub SetTextCallback(ByVal [text] As String) 'El delegado para la llamada a un subproceso Dim WithEvents WinsockServer As New Servidor.WinSockServer Private Sub
Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing End End Sub Private Sub Form1_Load(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles MyBase.Load With WinsockServer .PuertoDeEscucha = 8050
.Escuchar()
End With End Sub Private Sub WinsockServer_ConexionTerminada(ByVal IDTerminal As System.Net.IPEndPoint)
Handles WinsockServer.ConexionTerminada MsgBox(
"Desconectado IP=" & IDTerminal.Address.ToString & " Puerto = " & IDTerminal.Port) End Sub Private Sub WinsockServer_DatosRecibidos(ByVal IDTerminal As System.Net.IPEndPoint) Handles WinsockServer.DatosRecibidos 'MsgBox("Nuevo mensaje desde IP= " & IDTerminal.Port) 'Si intento recuperar los datos en un TextBox no funciona 'Porque hago una llamada a un subproceso no seguro 'txtMensaje.Text = WinsocServer.ObtenerDatos(IDTerminal)) <Esto no funciona SetText(WinsockServer.ObtenerDatos(IDTerminal))
'Con esto si funciona 'MsgBox(WinsockServer.ObtenerDatos(IDTerminal)) End Sub Private Sub WinsockServer_NuevaConexion(ByVal IDTerminal
As System.Net.IPEndPoint) Handles WinsockServer.NuevaConexion MsgBox(
"Se ha conectado un nuevo cliente desde IP= " & IDTerminal.Address.ToString & "puerto= " & IDTerminal.Port) End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click WinsockServer.EnviarDatos(txtMensaje.Text)
End Sub Private Sub SetText(ByVal [text] As String) If txtMensaje.InvokeRequired Then Dim d As New SetTextCallback(AddressOf SetText) Me.Invoke(d, New Object() {[text]}) Else txtMensaje.Text = txtMensaje.Text & [text]
End If End Sub End
Class
LLama Gratis a cualquier PC del Mundo.
Llamadas a fijos y móviles desde 1 céntimo por minuto.
http://es.voice.yahoo.com