Gracias Gracias:  0
Resultados 1 al 6 de 6

Tema: Sockets en Blender 2 49b

  1. #1
    Miembro Avatar de desiresportal
    Fecha de ingreso
    Jun 2011
    Mensajes
    36

    Blender Sockets en Blender 2.49b

    Antes de nada: Si esta pregunta ya está expuesta en otro sitio, lo siento. No lo he visto. Y si, lo he buscado.

    Últimamente me he decidido a aprender a usar los sockets de blender. Con la guia "Python para todos" he empezado con los ejemplos y creo que he entendido como funciona, pero... Cuando llego a la línea 7 "socket_s.bind("localhost", 9999)" empiezan los problemas.

    Cuando pongo como IP "localhost", blender continua hasta la línea 14 [print 'petición recibida'], pero cuando pongo una IP como por ejemplo "192.168.29.25" la consola de blender me dice que el valor indicado no es valido para este contexto.

    ¿Como es eso posible si se trata de un valor IP, justo lo que se tiene que poner ahí? (ponerlo sin comillas no funciona)

    ¿Alguien que me lo pueda explicar?

    Otra duda que me ha surgido según copiaba la parte del bucle:

    ¿Es necesario poner "if" en la línea 25?

    Esto me surgió por que en el manual no lo pone. Supongo que no es necesario por que ya está en un bucle condicionado... pero no tengo mucho entendimiento de programación en python.

    Aquí dejo el script servidor que es el que por ahora me esta dando todos los problemas:

    Código:
    import socket
    
    # creamos el objeto servidor
    socket_s = socket.socket()
    
    # Indicamos la IP y el puerto de escucha del servidor
    socket_s.bind(('localhost', 9999))
    
    # Hacemos que se ponga a escuchar y cuando recibe un mensaje crea la "tupla" del host y puerto de escucha de este.
    
    print 'Escuchando "localhost" en el puerto 9999'
    socket_s.listen(10)
    
    print 'petición recibida'
    
    socket_c, (host_c, puerto_c) = socket_s.accept()
    print 'Conexion aceptada'
    
    # Ahora, con el objeto socket podemos comúnicarnos con el del cliente medienta "send" y "recv".
    
    while True:
    	recibido = socket_c.recv(1024)
    	print 'Recibido: ', recibido
    	socket_c.send(recibido)
    	if recibido == "adios":
    		break
    
    # ahora hago que cuando este termine de trabajar se cierre usando el comando "close"
    
    socket_c.close()
    socket_s.close()
    Por si acaso a alguien se le ocurre preguntarme:

    Si he leído el texto. No he copiado el ejemplo del manual sin tratar de entender primero como funciona.

    Un saludo y gracias.

    PD: agradezco que quien responda se suscriba al tema por si me surgen más dudas al respecto.

    PPD: El manual se encuentra en Scribd. Para quien quiera comprobar los pasos que he seguido.

  2. #2
    Senior Member Avatar de Nugu
    Fecha de ingreso
    Jul 2013
    Ubicación
    Vilanova del Camí (Barcelona)
    Mensajes
    630

    Re: Sockets en Blender 2.49b

    Cita Iniciado por desiresportal Ver mensaje
    Antes de nada: Si esta pregunta ya está expuesta en otro sitio, lo siento. No lo he visto. Y si, lo he buscado.





    Últimamente me he decidido a aprender a usar los sockets de blender. Con la guia "Python para todos" he empezado con los ejemplos y creo que he entendido como funciona, pero... Cuando llego a la línea 7 "socket_s.bind("localhost", 9999)" empiezan los problemas.


    Cuando pongo como IP "localhost", blender continua hasta la línea 14 [print 'petición recibida'], pero cuando pongo una IP como por ejemplo "192.168.29.25" la consola de blender me dice que el valor indicado no es valido para este contexto.


    ¿Como es eso posible si se trata de un valor IP, justo lo que se tiene que poner ahí? (ponerlo sin comillas no funciona)


    ¿Alguien que me lo pueda explicar?



    Otra duda que me ha surgido según copiaba la parte del bucle:

    ¿Es necesario poner "if" en la línea 25?

    Esto me surgió por que en el manual no lo pone. Supongo que no es necesario por que ya está en un bucle condicionado... pero no tengo mucho entendimiento de programación en python.



    Aquí dejo el script servidor que es el que por ahora me esta dando todos los problemas:

    Código:
    import socket
    
    # creamos el objeto servidor
    socket_s = socket.socket()
    
    # Indicamos la IP y el puerto de escucha del servidor
    socket_s.bind(('localhost', 9999))
    
    # Hacemos que se ponga a escuchar y cuando recibe un mensaje crea la "tupla" del host y puerto de escucha de este.
    
    print 'Escuchando "localhost" en el puerto 9999'
    socket_s.listen(10)
    
    print 'petición recibida'
    
    socket_c, (host_c, puerto_c) = socket_s.accept()
    print 'Conexion aceptada'
    
    # Ahora, con el objeto socket podemos comúnicarnos con el del cliente medienta "send" y "recv".
    
    while True:
     recibido = socket_c.recv(1024)
     print 'Recibido: ', recibido
     socket_c.send(recibido)
     if recibido == "adios":
     break
    
    
    # ahora hago que cuando este termine de trabajar se cierre usando el comando "close"
    
    socket_c.close()
    socket_s.close()

    Por si acaso a alguien se le ocurre preguntarme:

    Si he leído el texto. No he copiado el ejemplo del manual sin tratar de entender primero como funciona.







    Un saludo y gracias.

    PD: agradezco que quien responda se suscriba al tema por si me surgen más dudas al respecto.

    PPD: El manual se encuentra en Scribd. Para quien quiera comprobar los pasos que he seguido.
    De todo esto de scribs no se mucho, lo único que puedo decirte es que por localhost se entiende al propio equipo. Y la Ip localhost es 127.0.0.1

    También veo que usas Linux, tienes el firewall activado? Si es así, tendrás que añadir el puerto 9999 ya que sino bloquea el no puesto.

    Otra cosa que recuerdo sobre esto, vigila con los espacios al inicio de cada frase activa. Si hay alguno donde no debe, también fallara. Y los # son comentarios referentes a las líneas.

    Si tienes dudas puedes usar el man de algún comando. No sé si existe man socket.


    Saludos.
    Última edición por Nugu; 04-08-2013 a las 20:00

  3. #3
    Miembro Avatar de desiresportal
    Fecha de ingreso
    Jun 2011
    Mensajes
    36

    Blender Re: Sockets en Blender 2.49b

    Gracias por la respuesta. Pero me temo que utilizo Windows, no linux.

    Lo de # ya lo sabia y para eso estaban ahí, para comentar lo que hace cada parte del script y no liarme a la hora de retomarlo y tratar de entenderlo.

    Lo que comentas de que "localhost" hace referencia a la propia máquina, realmente ya lo sabia. Por eso pretendía cambiar el "localhost" por una IP diferente, para que fuera accesible a otros equipos.

    Lo de los espacios siempre los vigilo. De echo creo que demasiado, pero... alguna vez ya me he pillado un cabreo por cometer ese error y no saber por que no iba el script.


    ¿Es necesario más equipos en la red?


    Esta es una buena pregunta dado que, con un script que descargue hace tiempo, logré hacer un socket. Más de uno incluso. Pero después de todo este tiempo, con el mismo script, con el mismo ordenador, con el mismo python instalado... me lanza un error y se cierra. No me da tiempo a leer el mensaje de error puesto que se cierra demasiado rapido.


    Con respecto al firewall de Windows, blender ya tiene permisos para enviar y recibir de todo, al igual que python.



    Aunque no me haya sido de gran ayuda, gracias por responder. Siempre viene bien tener más puntos de vista que el de uno mismo.


    PD: Revisaré de nuevo los espacios.

  4. #4
    Senior Member Avatar de Nugu
    Fecha de ingreso
    Jul 2013
    Ubicación
    Vilanova del Camí (Barcelona)
    Mensajes
    630

    Re: Sockets en Blender 2.49b

    Cita Iniciado por desiresportal Ver mensaje
    Gracias por la respuesta. Pero me temo que utilizo Windows, no linux.

    Lo de # ya lo sabia y para eso estaban ahí, para comentar lo que hace cada parte del script y no liarme a la hora de retomarlo y tratar de entenderlo.

    Lo que comentas de que "localhost" hace referencia a la propia máquina, realmente ya lo sabia. Por eso pretendía cambiar el "localhost" por una IP diferente, para que fuera accesible a otros equipos.

    Lo de los espacios siempre los vigilo. De echo creo que demasiado, pero... alguna vez ya me he pillado un cabreo por cometer ese error y no saber por que no iba el script.


    ¿Es necesario más equipos en la red?


    Esta es una buena pregunta dado que, con un script que descargue hace tiempo, logré hacer un socket. Más de uno incluso. Pero después de todo este tiempo, con el mismo script, con el mismo ordenador, con el mismo python instalado... me lanza un error y se cierra. No me da tiempo a leer el mensaje de error puesto que se cierra demasiado rapido.


    Con respecto al firewall de Windows, blender ya tiene permisos para enviar y recibir de todo, al igual que python.



    Aunque no me haya sido de gran ayuda, gracias por responder. Siempre viene bien tener más puntos de vista que el de uno mismo.


    PD: Revisaré de nuevo los espacios.
    Pues vaya, así ya sabes más que yo respecto al tema.


    Sé que no puedo ayudarte con el script. Pero has mirado en herramientas del sistema, el visor de eventos.

    Ahí seguramente que saldrá el error que no has podido ver.

  5. #5
    Miembro Avatar de desiresportal
    Fecha de ingreso
    Jun 2011
    Mensajes
    36

    Blender Re: Sockets en Blender 2.49b

    He buscado en el visor de eventos pero no he encontrado nada.

    ¿Hay algún comando para detener el script cuando hay un error inesperado sin que la ventana se cierre?

    Estoy empezando a optar por reinstalar el sistema operativo, Blender y python. Después volver a intentarlo.

    De esta forma podré asegurarme que no es ningún programa que entre en conflicto con python.


    Haré la prueba y os mantandré informados.

    PD: Últimamente he actualizado mucho windows... ¿Podría ser una actualización la que me esté dando estos problemas? ¿La que Windows impida realizar ciertos procesos a Python?

  6. #6
    Senior Member Avatar de Nugu
    Fecha de ingreso
    Jul 2013
    Ubicación
    Vilanova del Camí (Barcelona)
    Mensajes
    630

    Re: Sockets en Blender 2.49b

    Cita Iniciado por desiresportal Ver mensaje
    He buscado en el visor de eventos pero no he encontrado nada.

    ¿Hay algún comando para detener el script cuando hay un error inesperado sin que la ventana se cierre?

    Estoy empezando a optar por reinstalar el sistema operativo, Blender y python. Después volver a intentarlo.

    De esta forma podré asegurarme que no es ningún programa que entre en conflicto con python.


    Haré la prueba y os mantandré informados.

    PD: Últimamente he actualizado mucho windows... ¿Podría ser una actualización la que me esté dando estos problemas? ¿La que Windows impida realizar ciertos procesos a Python?
    No se si te servirá, pero el Visor de eventos no lo registra todo para no saturar de errores de información que se hacen muchos.

    Pero puedes crear un filtro y visualizar esos. En Windows 7 si vas a Visor de eventos, Crear vista personalizada, me parece que podrás crear un filtro eligiendo Origen y nombre de aplicación.

    Aquí también puedes elegir, el tipo de mensaje: Información sería el adecuado creo. Tampoco lo tengo mucho por mano todo esto ya que lo aprendí estudiando de forma básica.

    No se si saldrá Pyton, pero por probar nada se pierde. Una vez aceptado, vuelves a ejecutar el Pyton y si lo has podido elegir. Debería salirte el mensaje de error correspondiente de forma técnica.


    Espero que te sirva de ayuda, saludos.

Temas similares

  1. Nuevo libro sobre Blender: Creacion de personajes con Blender 2 69
    Por CaminanteBinario en el foro Quien eres tu - Aqui puedes presentarte
    Respuestas: 5
    Último mensaje: 21-12-2013, 01:52
  2. Blender Demora cuando seleccionas un objeto en Blender Posible Blender Bug
    Por KAEIKO en el foro Problemas con Programas
    Respuestas: 8
    Último mensaje: 30-08-2011, 00:57
  3. Respuestas: 1
    Último mensaje: 30-04-2010, 03:46
  4. Ubuntu 7 10 +blender+aceleracion grafica =Blender peta :
    Por opengl en el foro Problemas con Programas
    Respuestas: 24
    Último mensaje: 23-02-2009, 01:48
  5. Respuestas: 73
    Último mensaje: 23-06-2008, 23:23

Actualmente estos son sus permisos de publicación en el foro.

  • -No puedes crear nuevos temas al no estar registrado o no haber iniciado sesión en el foro.
  • -No puedes responder temas al no estar registrado o no haber iniciado sesión en el foro.
  • -No puedes subir archivos adjuntos al no estar registrado o no haber iniciado sesión en el foro.
  • -No puedes editar tus mensajes al no estar registrado o no haber iniciado sesión en el foro.
  •