Pregunta: | 14516 - PROBLEMAS CON EL WINSOCK (4006) |
Autor: | Fernando Diaz Sanchez |
Buenas a Todos...
Soy principiante con el Winsock, y quisiera que me den una mano ya que quiero hacer una especie de Winpopup primitivo, pero a mi me sale un MALDITO error (4006) Error \'4006\' en tiempo de ejecucion Protocolo o estado de conexion erroneo pra la transaccion o peticion solicitda SI, ya se que esta pregunta ya la han hecho, pues la lei, era la numero 2729, pero no me funciono, me sigue saliendo ese error No se que hacer, :( este es el codigo que uso para el formulario Servidor (ya que solo quiero probarlo en una maquina, nada mas...) ------------CODIGO DEL WINSOCK DE LA AYUDA DEL VB---------------- Private Sub Form_Load() \' Establece la propiedad LocalPort en un entero. \' Después invoca el método Listen. tcpServer.LocalPort = 1001 tcpServer.Listen frmClient.Show \' Muestra el formulario del cliente. End Sub Private Sub tcpServer_ConnectionRequest _ (ByVal requestID As Long) \' Comprueba si el estado del control es cerrado. \' De lo contrario, cierra la conexión antes de \' aceptar la nueva conexión. If tcpServer.State <> sckClosed Then _ tcpServer.Close \' Acepta la petición con el parámetro \' requestID. tcpServer.Accept requestID End Sub Private Sub txtSendData_Change() \' El control TextBox llamado txtSendData \' contiene los datos que se van a enviar. Siempre \' que el usuario escribe en el cuadro de texto, \' se envía la cadena mediante el método SendData. tcpServer.SendData txtSendData.Text \'-> AQUI SALE EL ERROR End Sub Private Sub |
Respuesta: | Jcgarcia Zavala |
Pues que no te cuenteen, la verdad yo vivi con ese problema mas de una semana hasta que pude resolverlo, el problema se origina por la velocidad de tu ordenador, ya que aun no se resuelve la conexion con el socket y el puerto del otro lado, cuando tu estas deseando enviar un paquete de informacion.
Tu codigo esta bien, el detalle es que cuanto envias no se puede enviar, y si checas el estado del socket aun no esta conectado porque aun noresuelve el elvio que deseas hacer. Acontinuacion te anexo una funcion llamada pause, ya que con ello le das un poco de tiempo al ordenador de emplear la apertura del puerto y designar el random del socket y poder hacer la conexion y el envio de datos adecuado. Suerte chico.!!! Private Sub Pausa() Dim Comenzar Dim Controlar Comenzar = Timer Do Until Controlar >= Comenzar + 0.1 Controlar = Timer DoEvents Loop End Sub Pon este evento pausa una linea antes del sendData de envio de datos para que todo salga bien. en pocas palabras quedaria asi. Pausa tcpserver.Senddata txtsendata.text Suerte chavo. |
Respuesta: | SuNcO |
Soy algo experto en WinSock =P y puedo ayudarte, solo falta ke pusieras el codigo de recibir para chekarlo, por lo pronto todo se ve bien
O puedes chekar este ejemplo de WinSock ke hize y ke ya tiene 48 visitas (apenas 1 semana) y ke nadie se a kejado de su funcionamiento www.chakasteam.n3.net/winsock.html Cualkier duda con gusto ahi esta mi mail |