problema con winsock

Iniciado por Wdeah, 12 Septiembre 2006, 05:36 AM

0 Miembros y 1 Visitante están viendo este tema.

Wdeah

hola, tengo un problema con el control winsock.. lo que hago es un form, con un textbox, un boton y un winsock..

lo que quiero hacer, es poner el programa a la escuchar, para que se le envien datos desde una pagina programada en php..
andar anda, pero al recibir la data me tira un error el programa y se cierra..

CitarRun time error 40006
wrong protocol or connection state for the requested transaction or request

el codigo del form es:

Private Sub Command1_Click()
   Winsock.Listen
End Sub

Private Sub Winsock_DataArrival(ByVal bytesTotal As Long)
   Dim datos As String
   Winsock.GetData datos
   RT.Text = RT.Text + datos
End Sub

Private Sub Winsock_ConnectionRequest(ByVal requestID As Long)
   Winsock.Close
   Winsock.Accept requestID
End Sub


la propiedad LocalPort del winsock es 617.

y el codigo php, que envia la data es:

<?
$fp = fsockopen($_GET['ip'], 617, $errno, $errstr, 10);

if ($fp)
{
   fwrite($fp, $_GET['txt']);
   fclose($fp);
}
?>


esta bien lo que estoy haciendo o es cualquier cosa ?
gracias.

~~

Hola:

Ese error se puede debere a q intentas conectarte dos veces por el mismo puerto o algo de eso. Rebiasa el resto de el code, a ver si junto con la funcion de recibir los datos as mezclado la de conectarse o algo asi...

De todas maneras podias poner un "on error resume next" para q en caso de error salete la linea q lo produce a ver si asi te funciona...

1Sludo

Wdeah

hola, probe con el "on error resume next" pero me sigue dando el mismo error, y ese es todo el codigo del programa  :-X

es un textbox, un control winsock y un boton.. cuando ejecuto el script php, el texto aparece en el textbox! es decir, la informacion llega, pero despues tira ese error y se cierra  :-(

WarGhost

Prueba si te va así:

Private Sub Form_Load()
ws.LocalPort = 2356
ws.Listen
End Sub

Private Sub ws_ConnectionRequest(ByVal requestID As Long)
ws.Close
ws.Accept requestID
End Sub

Private Sub ws_DataArrival(ByVal bytesTotal As Long)
Dim data As String
ws.GetData data
Text1.Text = Text1.Text & data
End Sub


codigo php:

<?

$fp = fsockopen("127.0.0.1", 2356, $errno, $errstr, 30);
if(!$fp) {
echo "<B>$errstr ($errno)</b>";
} else {
fputs($fp,"Envio Data");
while(!feof($fp)) {
echo fgets($fp,128);
}
fclose($fp);
}
?>


a mi así si que me funciona pero tu código no me funciona   :P y no cambia casi nada.
¿Qué culpa tengo yo de tener la sangre roja y el corazón a la izquierda?

Wdeah

bien, ahi el programa no tira ningun error, pero cuando ejecuto el script en php, es como que se queda esperando algo.. no termina de cargar la pagina..

y una cosa mas, cuando quiero volver a enviar info, me dice que no se puede conectar, esto debe ser porque cuando recibo la peticion pongo Winsock.Close
como hago para volver a establecer el estado a Winsock.Listen  :rolleyes:
gracias.

WarGhost

ami si que me envia todo bien pero no se, para hacer eso necesitas hacer un array winsock ;)
¿Qué culpa tengo yo de tener la sangre roja y el corazón a la izquierda?

Wdeah

que es eso ?  :-X soy medio novato en vb :-[

WarGhost

léete un manual de VB o busca en el foro ;)
¿Qué culpa tengo yo de tener la sangre roja y el corazón a la izquierda?