Título: Pregunta dificil por lo menos para mi =( (Ayuda porfavor) Publicado por: n3ts4mura1 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. Título: Re: Pregunta dificil por lo menos para mi =( (Ayuda porfavor) Publicado por: Mr.Chispa en 22 Agosto 2006, 10:40 am no se q es lo q intentas hacer.
si te sirve de ayuda el codigo para conectar es asi: SERVIDOR: en evento loadform: winsock.localport=5000 winsock.listen en evento connectionrequest: winsock.close winsock.accept requestId CLIENTE: en evento loadform winsock.remotehost="xxx.xxx.xxx.xxx" winsock.remoteport=5000 winsock.close winsock.connect a mi me funciona. Título: Re: Pregunta dificil por lo menos para mi =( (Ayuda porfavor) Publicado por: NYlOn en 22 Agosto 2006, 23:54 pm 1º: Si vas a meter codigo usa las etiquetas correspondientes (http://foro.elhacker.net/Themes/default/images/bbc/code.gif)
2º: Código: sckServer(Index).SendData enviar 3º: En el ConnectionRequest antes de aceptar creas un socket nuevo y aceptas la conexion con ese (el que acabas de crear). No se que Index utiliza el socket en el DataArrival, pero te recomiendo cambiarlo a intMax, asi usa el ultimo de todos. Fijate a ver si funciona con esos cambios. Saludos.- Título: Re: Pregunta dificil por lo menos para mi =( (Ayuda porfavor) Publicado por: MANULOMM en 26 Agosto 2006, 03:13 am hola
yo estoy en proceso de hacer un aplicacion parecida y me di cuenta que tratas de hacer una multiconexion (Vario Clientes un Solo Servidor) pero como no sabemos cuantos clientes son entonces le pedimos a la aplicacion que por cada cliente cree un winsok para la conexion por lo cual debe haber 2 winsock el 1 escucha este no tiene matriz (Array) pero el 2 como es quien hace la conexion con el nuevo cliente si debe tener Matriz y que esta este en 0, un pequeño desajuste de esto es que si se crea un Winsok y un cliente se conecta y mastarde se desconecta el winsock creado no desaparece por lo cual hay que decirle a la aplicación que antes de crear un nuevo winsock revise si no hay uno desocupado por que nos llenariamos de winsock, a qui te pongo mi coldigo que cumple con todo esto (Esta un poco distinto en cuanto a variables y txt pero esta muy comentado para que lo entiendas con facilidad) Código: '****ESTE ES EL CLIENTE*** CODIGO SERVIDOR Código: Private Sub Command1_Click() manulom@gmail.com JUAN MANUEL LOMBANA MEDELLÌN - COLOMBIA Título: Re: Pregunta dificil por lo menos para mi =( (Ayuda porfavor) Publicado por: n3ts4mura1 en 29 Agosto 2006, 21:10 pm Ok manulom gracias.
|