Entrar
¿Usuario nuevo? Regístrate
vbasicworld · Lista de discusión sobre programación en Visual Basic
? ¿Ya estás suscrito? Entrar en Yahoo!

Consejos de Yahoo! Grupos

¿Sabías que...?
Puedes buscar mensajes antiguos en un grupo.

Mensajes

  Mensajes Ayuda
Avanzado
DLL sock cliente y sock servidor Respuesta   Lista de mensajes  
Responder | Reenviar Mensaje #4160 de 4541 |
Hola.
 
Encontre la soluccion al siguiente ejemplo:
 
Private Sub WinsockServer_DatosRecibidos(ByVal IDTerminal As System.Net.IPEndPoint) Handles WinsockServer.DatosRecibidos
MsgBox("Nuevo mensaje desde IP= " & IDTerminal.Port)
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:
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


Vie, 16 de Feb, 2007 10:44 pm

vbasicred
Sin conexión Sin conexión
Enviar mensaje Enviar mensaje

Reenviar Mensaje #4160 de 4541 |
Desplegar mensajes Autor Ordenar por fecha

Hola. Encontre la soluccion al siguiente ejemplo: http://www.elguille.info/colabora/puntoNET/PabloTilli_SocketsVBNET.htm Private Sub...
Paul P. Garcia
vbasicred
Sin conexión Enviar mensaje
16 de Feb, 2007
10:45 pm
Avanzado

Copyright © 2009 Yahoo! Todos los derechos reservados.
Política de Privacidad Actualizada - Condiciones del servicio - Directrices - Ayuda