Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Problema Con Sockets
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje 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
 
 



 
soplo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Sockets TCP/IP MiguelVelandia Aplicaciones/Fragmentos de Código 3 Domingo, 12 Septiembre 2010, 20:57 Ver último mensaje
MiguelVelandia
No hay nuevos mensajes No Consigo Conectar Con Sockets olorak2 General 2 Viernes, 25 Febrero 2011, 21:37 Ver último mensaje
olorak2
No hay nuevos mensajes Sockets Locales Mi Pesadilla soplo General 7 Sabado, 26 Febrero 2011, 03:17 Ver último mensaje
soplo
No hay nuevos mensajes Arrays De Sockets jsbsan General 2 Domingo, 14 Agosto 2011, 20:12 Ver último mensaje
jsbsan
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
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



  

 

cron