Como hacer que un comando winsock este tambien en otro Form

Iniciado por Log-On, 8 Septiembre 2006, 02:43 AM

0 Miembros y 1 Visitante están viendo este tema.

Log-On

Buenas. Bien, les explico, Yo tengo un winsock, y en ese winsock me llegan los comandos que me ejecuta un servidor.
pues bien, Yo quiero que al crear otro form, creo un check y si ese check esta cheakado, me remplaze por ejemplo a por b. asi si el servidor me envia a yo recibire b y ejecutare b. Direis para que sirve, pues un juego virtual el cual lo tengo desde un WebBrowser y leo lo que me envia el servidor y lo modifico. Así puedo modificar lo que me de la gana. Lo de que remplaze si esta chekado, eso lo se hacer pero no se porque, cuando lo compilo y cheko ese reemplazamiento, no me remplaza y creo que es porque en el form 2 ( ese que hay para chekar o no ) no hay winsock pero si ya tengo un winsock en el form1 y alli leo lo que me envia el servidor, no podre en el form 2 otravez leer. Si quieren les pongo mi Proyecto y lo miran porque explicarlo es un lio. Solo quiero que me respondan a esta pregunta, ¿Se puede pasar una conexion winsock a otro form y que esa conexion siga en pie y poder reemplazar datos que me lleguen?

GRacias y perdonen por no expresarme bien.

rob1104

Claro que si, suponiendo que el control winsock se llama winsock1 y el formulario 2 se llame form 2 lo mandas llamar asi

form2.winsock1.blabla

Saludos
Sin análisis de requisitos o sin diseño, programar es el arte de crear errores en un documento de texto vacío.

Log-On

No se porque. Mira esto
Private Sub SockServer_DataArrival(ByVal bytesTotal As Long)
On Error Resume Next
Dim ServersData As String
SockServer.GetData ServersData
[b]Form3.SockServer[/b]
' [Aqui van todos los Filtros]
If dance.Value = 1 Then
ServersData = Replace(ServersData, "dance", "")
End If
SockClient.SendData ServersData
If Check1.Value = 1 Then
Text1.Text = ServersData & vbNewLine & Text1.Text
End If
End Sub


me salta un error...

Compile error:

Method or data member not found.

y me subrralla .SockServer y es asi como se llama el winsock
Gracias de antemano

ReViJa

#3
Form3.SockServer pero ahi solo lo llamas. Prueba esto y veras como hace lo mismo.
Form3.Text1

Aunque tengas el "componente" tendras que mandarle algo, no?


Log-On

#4
Aver si me explico, tengo en el form1 el SockServer y tengo que ponerlo en el Form3, que hago en el form3 un form1.SockServer o que? :(

Si hago un MsgBox me vale, yo creo que esta en el Private Sub, tengo que encontrar la forma de hacer que si me llegan datos en el SockServer del form1 (SockServer_dataArrival) en el form 3 haga lo que esta en el codigo que esta alli dentro del Private Sub SockServer_dataArrival.

Chief

NUUUU, lo que haces con Form3 es llamar a un objeto del modulo Form3 desde otro modulo que puede ser el Form1, ocea si pones Form3.SockServer estas llamando a SockServer del  modulo Form3, no lo estas "poniendo" en el Form que lo llamas. Ahora con eso, podes usar los metodos que tiene SockServer del modulo Form3 en el Form1 por ejemplo.

Ocea, mmmmm, queres saber la ip local y el SockServer esta en el Form1 , pero vos lo queres llamar desde el Form3, entonces pondrias :

sVar = Form1.SockServer.localip

Tendes ?
Despues lo que queres hacer no te entiendo.
sr. oscuro


NYlOn

Tambien podes usar With. Es simplemente por comodidad, por ejemplo si usas mucho Form1.SockServer.CualquierPropiedad pones With Form1.Sock... y si apretas el . (punto) te va a mostrar todas las propeidades del SockServer. Se usa asi:

With Form1.ScokServer
        .RemotePort = "5000"
        'Podes poner otros codigos que no tengan nada que ver con el SockServer
        Text1.Text = "Hola"
        Winsock1.SendData "Este socket es de este formulario"
        MsgBox .LocalIp 'Aca mostras la ip local del SockServer (del formulario 1)
End With 'No te olvides de cerrarlo


Espero que se alla entendido, saludos.-

Castord

Viejo... sos inentendible... te respondo segun lo que entendi...

si queres que cierta parte de tu codigo se ejecute en el evento DataArrival del winsock respectivo...
Para empezar, no importa que formulario tengas visible en ese momento (si estas en el form3 o form1), ahora, si importa que form1 este cargado con el socket abierto y conectado a su anfitrion.
Esta es la solucion que propongo para el problema que tenes (segun mi parecer)...
En
Private Sub Winsock1_DataArrival(bla as bla) as bla
'aqui va tu codigo, cierto?
'en vez de colocar el codigo completo aqui, propongo que lo cortes y te lo lleves a un modulo publico declarado como funcion o subrrutina, o, es su defecto, a tu form3 como funcion o subrrutina publica. entonces, seria algo asi (suponiendo que la funcion no recibe ni devuelve argumentos)...

FuncionDeTuViejoCodigo 'si esta en un modulo
form3.FuncionDeTuViejoCodigo 'si esta en el form3

end sub

Esto se va a ejecutar siempre que el form1 este cargado y con el control en estado 7 y recibas un dato. Asi, tenes la posibilidad de controlar el proceso desde un formalario <> form1.
Si lo que queres es guardar lo datos (integer, string por ej.) podes hacerlo cargandolo en una variable o guardalo directamente en tu dispositivo preferido. Si recibis datos de tipo binary recomiendo que armes los paquetes para evitar corrupciones, olvidate aqui de las variables automaticas o globales.


Desde Asunción - Paraguay
/*Es una ***** pero igual amo mi país!*/

Log-On

Bueno sin leer nada lo hize pero leyendo tambien lo hubiera echo. lo que he echo es que si tengo un Text en form3 por ejemplo, en el form1 llamo al text del form 3 y lo ejecuto en el form uno, asi es muy simple ^^

Gracias por responder y se que costaba entenderme x'D