Problema Con Sockets


Objetivo: 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

Perfil MP  
Objetivo: 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

Perfil MP  

Página 1 de 1


  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.3822s (PHP: -83% SQL: 183%)
Consultas SQL: 22 - Debug off - GZIP Activado