Problemas con dataarrival

Iniciado por 50l3r, 14 Mayo 2009, 00:14 AM

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

50l3r

Veran, intento realizar un proyecto que recopile la mayor inforamcion posible del equipo remoto

estoy haciendo un server y un cliente

quiero que,cada dato que me mande, ejemplo, la ip, nombre de host, sistema operativo, me coloque cada cosa en su correspondiente textbox, la ip en un lado, el hostname en otro...etc

la cosa es que yo se coger los datos con el data arrival, pero como hago para que cada dato vaya a su textbox correspondiente? ya que todo llega de sopetón


gracias, me ayudariais mucho si me lo dijeseis

seba123neo

me imagino que si envias todo junto como decis lo debes enviar con algun separador o algo...si lo envias con un separador despues hacer un Split()y mostras los datos del array en cada textbox...

saludos.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

YST

Generalmente se envia de esta manera

Desde el programa ue esta infectando el pc mandas:
Datos%)%NombrePC%)%Username ...

y en el programa que controla divides con split , usando el separador:
Código (ASM) [Seleccionar]
%)%

y luego comparas si el primer datos es "Datos"  agregas los demas datos a su lugar correspondiente


Yo le enseñe a Kayser a usar objetos en ASM

el_c0c0

Cita de: YST en 14 Mayo 2009, 03:20 AM
Generalmente se envia de esta manera

Desde el programa ue esta infectando el pc mandas:
Datos%)%NombrePC%)%Username ...

y en el programa que controla divides con split , usando el separador:
Código (ASM) [Seleccionar]
%)%

y luego comparas si el primer datos es "Datos"  agregas los demas datos a su lugar correspondiente


%)% es algo arbitrario, podes usar chr(0) tambien, o lo que se te cante! el tema es que no se repita y que sea jodido que aparezca en la data que envias (para diferencia bien entre data y separador)

saludos
'-     coco
"Te voy a romper el orto"- Las hemorroides

50l3r

#4
este es mi codigo por ahora, este es el servidor:

Private Sub cdmescuchar_Click()
wsk.Close
wsk.Listen
lblstatus.Caption = "Escuchando..."
End Sub

Private Sub cmdcerrar_Click()
wsk.Close
lblstatus.Caption = "Apagado"
End Sub

Private Sub Form_Load()
wsk.LocalPort = 666
End Sub

Private Sub wsk_connectionRequest(ByVal requestID As Long)
If MsgBox(wsk.RemoteHostIP & "esta intentando conectarse", vbQuestion + vbYesNo, "Conexion entrante") = vbYes Then
wsk.Close
wsk.Accept requestID
Else
wsk.Close
Call cmdescuchar_click
End If
End Sub


Ahora que tendria que poner un evento, asi?

private Sub wsk_dataarrival(byval bytestotal as long)
'Aqui que tendria que poner?
end sub



lo que pasa es que, te llega la info con el delimitador %)% ok, luego usas split asi:

private sub wsk_dataarrival(byval bytestotal as long)
dim datos as string
Function Split(
   ByVal datos As String,
   Optional ByVal Delimiter As String = "%)%",
   Optional ByVal Limit As Integer = -1,
   Optional ByVal Compare As CompareMethod = CompareMethod.Binary
) As String()
wsk.getdata datos(0)
texip.text = datos(0)

ahi, si la ip fuese el primer dato cortado, me lo daria?

50l3r

Bueno, excuso este doble post debido a que encontre la respuesta, asi ayudare mas a otras futuras dudas:

Para poder obtener los datos, necesitas separarlos, el cliente debe de mandar los datos con algun caracter separador, por ejemplo "--" de manera que los datos lleguen asi:

dato1--dato2--dato3

luego con la funcion split(datos, "--")

los separas y obtienes arrays, el primer dato es el array 0 y asi sucesivamente

un ejemplo:

Private Sub wsk_dataarrival(ByVal bytestotal As Long)
Dim datos As String
Dim trozos() As String
wsk.GetData datos
trozos = Split(datos, "%)%")
txt1 = trozos(0)
txt2 = trozos(1)
txt3 = trozos(2)
txt4 = trozos(3)
End Sub

locot3

Buenas mira yo tambien tengo un programita que "recopila" info de otras Pcs' heheeh, y bueno para hacer lo que tu quieres te doy un ejemplo bien facil mira cuando mandes los datos desde el server ( osea el nombre de la PC o todo lo que quieras mandar ) en el server create una variable String y dentro de esa variable junta todos los datos que quieras mandar  ejemplo :

VarString = pcname & "+" & pcuser & "+" & pccpu ' y asi aumentas todo lo que quieras
winsock1.datasend VarString

eso va en el server cuando haces el DataSend , y en tu cliente cuando estas en el sector de DataArrival de tu winsock lo separas con el Split que ya te avian dicho antes

winsock.dataarrival buffer
divide=split(buffer,"+") ' ahi separa todo por el signo + q tu puedes cambiarlo por el q tu quieras
divide(0) sera igual a pcname
divide(1) sera igual a pcuser
divide(2) sera igual a pccpu

y asi espero me ayas entendido!! por cierto el signo "+" lo puedes cambiar por el que tu quieras yo usso siempre ese porque rara ves aparece por ahi ;) saludos y suerte !!



50l3r

si, ahora mismo uso este que me dijeron %)% que no creo que se use jeje

la informacion que me es mandada va desde el cliente al servidor

por cierto, estoy intentando hacer esto

creo en el cliente un filelist un drivelist y un dirlist y les conecto los 3, y luego intento mandarlos asi:

Private Sub Command1_Click()
Dim datos As String
datos = txthst & "%)%" & txtso & "%)%" & drv.Drive & "%)%" & Dir.Path & "%)%" & file.Path
wsk.SendData datos
End Sub


luego despues en el servidor se reciben asi:

Private Sub wsk_dataarrival(ByVal bytestotal As Long)
Dim datos As String
Dim trozos() As String
wsk.GetData datos
trozos = Split(datos, "%)%")
txthst = trozos(0)
txtso = trozos(1)
[b]drv.Drive = trozos(2)
Dir.Path = trozos(3)
File.Path = trozos(3)[/b]
End Sub


en el server he llamado a los objetos igual que en el cliente, y al asociarlos con los datos enviados del drv.drive, dir.path y file.path me pasa esto:


YST

El error sucede por que no existe la ruta que pones desde el server en el cliente

PD:por cierto leete un manual de una ves


Yo le enseñe a Kayser a usar objetos en ASM

50l3r

ya me lei el de aprenda vb como si estuviera en primero pero ni siquiera toca controles winsock

me estoy leyendo manuales de todos lados antes de preguntar, no creo que por que pregunte haga daño

CitarEl error sucede por que no existe la ruta que pones desde el server en el cliente

aqui que te refieres, a que no hay un drivelist,dirlist y filelist con ese nombre? si,si lo hay, el error esta en otro lado, nose si te referiras a eso

gracias por tu ayuda