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
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 :-(
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.
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.
ami si que me envia todo bien pero no se, para hacer eso necesitas hacer un array winsock ;)
que es eso ? :-X soy medio novato en vb :-[
léete un manual de VB o busca en el foro ;)