|
Mostrar Mensajes
|
Páginas: [1] 2 3 4 5 6
|
3
|
Programación / Programación Visual Basic / Pregunta dicil.
|
en: 28 Agosto 2006, 19:56 pm
|
Hola buenas primero que nada decirle que tiene relacion con socket.
Estoy haciendo un programa tipo chat cliente y servidor el servidor esta con una matriz de socket que quiere decir esto que mas de 1 cliente se pueden conectar a este servidor ahora cual es mi duda muchos clientes se pueden conectar y enviar el mesanje al servidor pero yo quiero discriminar cuando envio el mensaje del servidor a los clientes solo se lo envia al primero que se conecto lo que yo quiero hacer es escoger a que cliente enviar el mensaje y esa es mi duda haber si alguien me ayuda.
Si alguien necesita codigo para ver o tratar de ayudarme deme su correo lo agrego bueno saludos.
Agradeceria la ayuda estoy estancado con esto =(.
|
|
|
5
|
Programación / Programación Visual Basic / Pregunta dificil por lo menos para mi =( (Ayuda porfavor)
|
en: 21 Agosto 2006, 17:35 pm
|
Sacado de un libro voy a escribir lo que este dice luego escribo mi cofigo que me falla: ************************************************************ *********** Dice: **** El codigo que se muestra a continuacion presupone que existe un control Winsock en un formulario llamador sckServer y que su propiedad Index tiene el valor 0,por lo que el control forma parte de una matriz de controles.En la seleccion Declaraciones se declara una variable intMax a nivel de modulo.En el evento Load del formulario,intMax tiene establecido el valor 0 y la propiedad LocalPort del primer control de la matriz el valor 1001.Despues,se invoca el metodo Listen en el control,convirtiendolo en el control "que escucha".A medida que llega cada solicitud de conexion,el codigo comprueba si el indice es 0 (el valor del control "que escucha"). Si es asi,este control aumenta la variable intMax y utiliza ese numero para crear una nueva instancia del control.Esta nueva instancia se utiliza para aceptar una solicitud de conexion.
Ahora el codigo que sale en el libro es: ***************************************** Private intMax As Long
Private Sub Form_load() intMax=0 sckServer(0).LocalPort=1001 sckServer(0).Listen End Sub
Private Sub sckServer_ConnectionRequest(Index As Integer, ByVal requestID As Long) If Index=0 Then intMax=intMax+1 Load sckServer(intMax) sckServer(intMax).LocalPort=0 sckServer(intMax).Accept requestID Load txtData(intMax) End If End Sub
**********************************
Ahora mi codigo: ***************
Servidor: Un control winsock con nombre sckServer 2 cajas de texto y un boton para enviar el texto.
***************************** Private intMax As Long
Private Sub Command1_Click() Dim enviar As String enviar = Text2.Text sckServer(Index).SendData enviar End Sub
Private Sub Form_Load() intMax = 0 sckServer(0).LocalPort = 1001 sckServer(0).Listen End Sub Private Sub Winsock1_ConnectionRequest(Index As Integer, ByVal requestID As Long) If Index = 0 Then intMax = intMax + 1 Load sckServer(intMax) sckServer(intMax).LocalPort = 0 sckServer(intMax).Accept requestID Load txtdata(intMax) End If End Sub
Private Sub Winsock1_DataArrival(Index As Integer, ByVal bytesTotal As Long) Dim datos As String sckServer(Index).GetData datos 'aca nose si es intmax o index Text1.Text = Text1.Text + datos End Sub
*************************************** Cliente:un control winsock se llama sckCliente 2 cajas de texto 2 botones uno para enviar y otro boton para conectar.
Private Sub Command1_Click() sckCliente.RemotePort = 1001 sckCliente.RemoteHost = "192.168.0.1" sckCliente.Connect End Sub
Private Sub Command2_Click() Dim enviar As String enviar = Text2.Text sckCliente.SendData enviar End Sub
Private Sub sckCliente_DataArrival(ByVal bytesTotal As Long) Dim datos As String sckCliente.GetData datos Text1.Text = Text1.Text + datos End Sub
******************************************
me fallan tanto el cliente como el servidor al tratar de enviar el mensaje de un lado al otro pero se conectan .
Agradeceria mucho alguien me diera una mano desde yan muchas gracias saludos a todos xD.
|
|
|
8
|
Programación / Programación Visual Basic / alguien puede tener idea de porque falla esto?(socket)
|
en: 18 Agosto 2006, 18:14 pm
|
Server: Private Sub Form_Load() intmax = 0 tcpServer(0).LocalPort = 1001 tcpServer(0).Listen End Sub
Private Sub tcpServer_ConnectionRequest(Index As Integer, ByVal requestID As Long) If Index = 0 Then intmax = intmax + 1 Load tcpServer(intmax) tcpServer(intmax).Accept requestID Load txtData(intmax) End If End Sub
Private Sub tcpServer_DataArrival(Index As Integer, ByVal bytesTotal As Long) Dim strData As String tcpServer.GetData strData txtOutput.Text = strData End Sub
Private Sub txtSendData_Change() tcpServer.SendData txtSendData.Text End Sub
Me da error en el server . y el cliente es esto
Private Sub cmdConnect_Click() tcpClient.Connect End Sub
Private Sub Form_Load() tcpClient.RemoteHost = "192.168.0.1" tcpClient.RemotePort = 1001 End Sub
Private Sub tcpClient_DataArrival(ByVal bytesTotal As Long) Dim strData As String tcpClient.GetData strData txtOutput.txt = strData
End Sub
Private Sub txtSendData_Change() tcpClient.SendData txtSendData End Sub
|
|
|
10
|
Programación / Programación Visual Basic / Re: obtener index de winsock
|
en: 17 Agosto 2006, 21:13 pm
|
Haber si esto te sirve:
Private Sub ws_ConnectionRequest(index As Integer, ByVal requestID As Long) Dim actIndex As Integer Dim strData As String On Local Error Resume Next Err.Clear '//Un usuario solicita nueva conexión y verificamos que se realiza '//a través del canal 0 de WS que es el servidor a la escucha. If index = 0 Then If freeSockets.Count <> 0 Then actIndex = freeSockets(1) freeSockets.Remove 1 '//Aceptar conexión recuperando hilo users(actIndex) = "" rqs(actIndex) = CStr(requestID) ws(actIndex).LocalPort = 0 ws(actIndex).Accept requestID Else idServer = idServer + 1 actIndex = idServer '//Aceptar conexión en nuevo hilo ReDim Preserve users(1 To actIndex) ReDim Preserve rqs(1 To actIndex) users(actIndex) = "" rqs(actIndex) = CStr(requestID) Load ws(actIndex) ws(actIndex).LocalPort = 0 ws(actIndex).Accept requestID End If End If '//preparar cadena de identificación strData = "[REQUEST]|" + CStr(requestID) sendSERVER actIndex, strData End Sub
|
|
|
|
|
|
|