Problema cliente / servidor ; procesos del sistema

Iniciado por dark_soul, 10 Mayo 2006, 22:32 PM

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

dark_soul

 Wenas , lo primero describire el programa ;en una aplicacion cliente / servidor . Quiero que en el server se listen todos los procesos del sistema  y despues se envien al cliente y se copien en un list. Dejo el codigo a ver si me podeis decir que falla:


SERVER:

Dim ListaProcesos As Object
Dim ObjetoWMI As Object

Private Sub Listar()
Set ObjetoWMI = GetObject("winmgmts:")
If IsNull(ObjetoWMI) = False Then
Set ListaProcesos = ObjetoWMI.InstancesOf("win32_process")
'Recorremos toda las coleccion en lista de procesos y la añadimos al list
For Each ProcesoACerrar In ListaProcesos
List1.AddItem LCase$(ProcesoACerrar.Name)
Next
End If

'Eliminamos las variables de objeto

Set ListaProcesos = Nothing
Set ObjetoWMI = Nothing

End Sub

Private Sub Command1_Click()
ws.SendData Text2.Text
End Sub


Private Sub Command2_Click()
ws.SendData Text2 '
List1.AddItem Text2
End Sub

Private Sub Command3_Click()
List1.Clear
Listar
End Sub

Private Sub Form_Load()
ws.LocalPort = 1001
ws.Listen
End Sub

Private Sub ws_ConnectionRequest(ByVal requestID As Long)
If ws.State <> sckClosed Then _
ws.Close
ws.Accept requestID
End Sub

Private Sub ws_DataArrival(ByVal bytesTotal As Long)
Dim datos As String
ws.GetData datos
Text1.Text = datos
End Sub

Y EN EL CLIENTE :

Private Sub Command1_Click()
On Error Resume Next
ws.Connect
End Sub

Private Sub Command2_Click()
On Error Resume Next
ws.SendData Text2.Text
End Sub



Private Sub Form_Load()
ws.RemoteHost = "127.0.0.1"
  ws.RemotePort = 1001
End Sub

Private Sub ws_DataArrival(ByVal bytesTotal As Long)
On Error Resume Next
Dim datos As String

  ws.GetData datos
  Text1.Text = datos
  List1.AddItem datos
End Sub


El problema es que si mando una palabra solamente funciona bien , pero si listo los procesos en el server y le doy a enviar al cliente no funciona.. Alguien sabe que puede pasar ???

gracias de antemano salu2

<--v1c1ous-->

Buenas.
Solo por concejo:
Lee la funcion antes de cuestionarte cuarquier cosa y entendela.
hace una que otra prueba antes de cuestioanrte tambien, por ej logra listar los procesos en un listbox dentro del server y hacelo precionando f8, asi vas a ver como funciona y despues trata de pasarlos al cliente, si no lo logras, ahi cuentionate.


Ahora te explico, al pedirle al server la lista nos interesa esta parte:

CitarFor Each ProcesoACerrar In ListaProcesos
List1.AddItem LCase$(ProcesoACerrar.Name)
Next

Agrega al listbox los prosesos uno por uno hasta terminar, vos queres pasar cada uno de esos procesos listados a tu cliente.

Facil, en cada vez que tu server liste un proceso lo sumas a un buffer y despues mandas todo junto a tu cliente ¿Como?
SERVER:
A la hora de listar cada proceso a su vez lo agregas a un buffer
Citarbuffer = buffer & Proceso & "|"
CLIENTE:
El cliente recibe los procesos delimitados por "|" y los va agregando al listbox
Citarproceso() = Split(DATA,"|")
For i = 0 to proceso
listbox.additem proceso(i)
next

Sobreentiendo que sabes usas variables :)

Saludos.