Programación General > Visual Basic 6.0 e inferiores

 Re: Numero maximo de WINSOCK por servidor...

<< < (2/2)

observador:
Bien... esa opcion la tengo programada en el chat que te menciono, pero no pense que tuvieses problemas con ello...

Mira, aunque haya varios usuarios conectados simultaneamente, si es posible enviarle mensajes en forma independiente, para ello, agregale un control CommandButton al servidor... Cambiale el nombre a este CommandButton por CmdPrivado, tambien colocale en la propiedad Caption el texto "Privado" y agregale el siguiente codigo al form del servidor (FrmServidor)...

 
--- Código: Text ---Private Sub CmdPrivado_Click()    If ListClientes.ListIndex <> -1 Then 'Si hay algún usuario seleccionado        WinsockServidor(Val(ClientesIndice.List(ListClientes.ListIndex))).SendData "[" & Usuario & "] dijo: " & TxtEnviar.Text        DoEvents    else 'Sino hay usuarios, mostrar un mensaje de aviso        MsgBox "Selecciona a un usuario de la lista" & vbCrLf & "para poder enviarle el mensaje", vbExclamation    end if    'Con la siguiente lines desseleccionas el usuario activo    ListClientes.ListIndex = -1End Sub Si deseas que los datos que vienen de algun cliente no se redirecciones a todos los demas clientes conectados y que solo sea visto por el servidor, pues solo cambia el codigo del evento WinsockServidor_DataArrival del servidor por el siguiente:

 
--- Código: Text ---Private Sub WinsockServidor_DataArrival(Index As Integer, ByVal bytesTotal As Long)    Dim Duplicate As Boolean    Dim CadenaEntrante As String, UsuariosTmp As String        WinsockServidor(Index).GetData CadenaEntrante 'Obtiene el mensaje entrante segun que control lo envió     If InStr(1, CadenaEntrante, " dijo:", 1) = 0 Then        'Si no esta la frase " dijo:" entonces es que es un nuevo usuario        ListClientes.AddItem CadenaEntrante 'Agregamos el cliente a la lista        ClientesIndice.AddItem IntMax       'Agregamos una referencia al winsock que apunte al cliente                TxtMensajes.SelStart = Len(TxtMensajes.Text)        TxtMensajes.SelText = vbCrLf & "    " & CadenaEntrante & " ha entrado a la sala"                'Ya agregado el usuario, actualizar la lista en los clientes        UsuariosTmp = "[.LISTA]" & UsuariosConectados                '''El codigo de aqui fue quitado        '''El codigo que estaba aqui actualizaba la lista de usaurios conectados en todos los clientes                'Mostramos el numero de usuarios que estan conectados        LblNumUsuarios.Caption = "Conectados: " & ClientesIndice.ListCount    Else                 '''El codigo de aqui fue quitado        '''El codigo que estaba redireccionaba los datos hacia todos los clientes conectados                TxtMensajes.Text = TxtMensajes.Text & vbCrLf & CadenaEntrante    End If    TxtMensajes.SelStart = Len(TxtMensajes.Text)End Sub Y asi solucionas el problema de como enviarle datos a usuarios especificos... y tambien que no redireccionas los datos que vienen del los clientes...

Si deseas que todos puedan ver los datos que envian los clientes, pero que tambien este la opcion de que pueda enviar mensajes privados al servidor, pues el codigo de el evento WinsockServidor_DataArrival no lo debes cambiar, solo debes de crear un nuevo "comando de servidor" ([.PRIV] por ejemplo) y que este lo reconosca el servidor tal como reconoce el comando [.LIST], por eso no quite la idea basica del procesamiento de comandos para que fuera posible y facil agregarle mas comandos y poder interpretarlos...

Suerte...

eamc88:
necesito una ayuita para mandar ordenes a otras pcs para con un servidor y varios clientes es para un ciber es proyecto de escuela por favor ayudenme

x_x1_x_x1_x:
Muchas Gracias, llevo semanas buscando algo como esto.

De verdad, mil millones de gracias.

Navegación

[0] Índice de Mensajes

[*] Página Anterior

Ir a la versión completa