Programación General > Visual Basic 6.0 e inferiores
Re: Numero maximo de WINSOCK por servidor...
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
[*] Página Anterior
Ir a la versión completa