Problema Con Sockets


Subject: Problema Con Sockets
Hola
No veo que me está pasando. No consigo establecer una conexión y no veo la razón.

Salida de netstat que demuestra que el puerto 10000 está a la escucha
Citar:
netstat -tpan | grep 10000
tcp 0 0 0.0.0.0:10000 0.0.0.0:* LISTEN 3674/gbx2


Y quiero abrir un socket a ese puerto
Public function Conectar() as socket
Dim S as new socket
S.Connect("localhost", "10000")
DO WHILE (S.Status <> 7) AND (S.Status > 0)
WAIT 0.1
LOOP
IF S.Status <> 7 THEN
Message.Error("no conecta")
ELSE
WRITE #S, mensaje.text, 5
ENDIF
...
end

Al intentar conectar status coge valor 5 -> Net.Searching (osea que está resolviendo el nombre)
Luego status coge valor 0 --> Net inactive (osea que ha colgado) y acaba en el message "no conecta"
Por si acaso era un problema de resolución de nombre he probado con la ip y tampoco.

No caigo

Profile PM  
Subject: Re: Problema Con Sockets
Hola

Yo recomiendo usar la otra forma basada en eventos.

Para crear un socket tienes que hacer:

PRIVATE mySocket AS Socket

PUBLIC SUB Form_Open()
mySocket = NEW Socket AS "MySocket1" 'instanciamos un nuevo socket con el manejador "MySocket1"
mySocket.Host = "localhost"
mySocket.Port = 10000
IF mySocket.Status <> Net.Connected() THEN 'si no estamos ya conectados, nos conectamos
mySocket.Connect()
END IF
END

PUBLIC SUB MySocket1_Ready()
WRITE #mySocket,"Prueba\n", 7 'una vez que el socket está listo, podemos escribir en él

END

PUBLIC SUB MySocket1_Read() 'este evento se dispara siempre que haya datos en el buffer interno
DIM Cad AS String 'pendientes de leer.
READ #mySocket, Cad, Lof(mySocket)
PRINT Cad
CLOSE #mySocket 'puedes cerrarlo aquí, o en otro momento. Por ejemplo en el evento Form_Close()

END

PUBLIC SUB MySocket1_Error() 'este evento se dispara cuando hay un error. Puedes
'mostrar un mensaje.
DEBUG "Se ha producido un error"

END


Esta es la forma preferida de manejar sockets. Además recomiendo usar versiones recientes de gambas, ya que en las más antiguas este componente tenía un problema que hacía que consumiera muchos recursos de la máquina.

El código aquí expuesto es el que vengo usando en mis aplicaciones, pero lo he escrito de memoria y puede que haya algún fallo...

Saludos

Profile PM  

Page 1 of 1


  
You cannot post new topics
You cannot reply to topics
You cannot edit your posts
You cannot delete your posts
You cannot vote in polls
You cannot attach files
You can download files
You cannot post calendar events

   

This is a "Lo-Fi" version of our main content. To view the full version with more information, formatting and images, please click here.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Generation Time: 0.1129s (PHP: -27% SQL: 127%)
SQL queries: 23 - Debug Off - GZIP Enabled