Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

No funciona Networking -- Error: WinError 10038 #342

Open
7 tasks done
jsilvalavin opened this issue Dec 8, 2021 · 8 comments
Open
7 tasks done

No funciona Networking -- Error: WinError 10038 #342

jsilvalavin opened this issue Dec 8, 2021 · 8 comments
Assignees
Labels
resuelto Tarea 3 Dudas sobre la T3

Comments

@jsilvalavin
Copy link

Prerrequisitos

(Marcar colocando una X entre los corchetes los ítems que ya hiciste, así: "[X]")

  • Leí las reglas del foro (https://github.com/IIC2233/syllabus/issues/1)
  • Busqué en las issues si ya preguntaron mi duda y no encontré nada parecido (https://github.com/IIC2233/syllabus/issues)
  • Revisé el compilado de dudas de la tarea y no encontré una issue similar a la mía (Duda SOLES_ROBADOS Syllabus#293)
  • Mi duda no se trata sobre una librería, built-in o mala práctica, ya que eso se pregunta en la issue creada para ello.
  • Mi duda no se trata de un tema administrativo o personal, ya que en ese caso debo contactar a mi profe, al Jefe de Bienestar o al correo del curso (https://iic2233.github.io/contacto/)
  • Utilizaré un título descriptivo y llenaré correctamente esta plantilla
  • De ser necesario, solo colocaré código simple que permita explicar mi problema o duda, ya que compartir código de esta evaluación puede ser considerado copia

Estaba tratando de hacer el código de la ayudantía de Networking. Copiando literalmente el mismo código, me sale el siguiente error en la consola:

Traceback (most recent call last):
File "c:/Users/Maria Ignacia/Desktop/Intento/servidor/servidor.py", line 13, in
socket_cliente, address = socket_servidor.accept()
File "C:\Users\Maria Ignacia\AppData\Local\Programs\Python\Python38\lib\socket.py", line 292, in accept
fd, addr = self._accept()
OSError: [WinError 10038] Se intentó realizar una operación en un elemento que no es un socket
PS C:\Users\Maria Ignacia\Desktop\Intento\servidor>

Pareciera ser un error de la libreria o algo así! No puedo avanzar en la tarea con esto :(

@jsilvalavin jsilvalavin added the Tarea 3 Dudas sobre la T3 label Dec 8, 2021
@tocococa
Copy link

tocococa commented Dec 8, 2021

Hola @jsilvalavin , lo más probable que está ocurriendo es que socket_servidor no es un socket, o solo está declarado como socket() y falta pasarle los argumentos socket.AF_INET, socket.SOCK_STREAM o socket.AF_INET, socket.SOCK_DGRAM para inicializarlo.

@tocococa tocococa self-assigned this Dec 8, 2021
@jsilvalavin
Copy link
Author

jsilvalavin commented Dec 8, 2021

Hola @jsilvalavin , lo más probable que está ocurriendo es que socket_servidor no es un socket, o solo está declarado como socket() y falta pasarle los argumentos socket.AF_INET, socket.SOCK_STREAM o socket.AF_INET, socket.SOCK_DGRAM para inicializarlo.

hola @tocococa gracias :) Pero si lo defini como dices, copie al pie de la letra el codigo de la ayudantía, es decir el de estos pantallazos:

El cliente
image

El servidor
image

Además, note que el error tiene un traceback a la libreria socket, al parecer :( Que podría ser en este caso?

@MTaisa
Copy link

MTaisa commented Dec 8, 2021

A mi me pasaba exactamente el mismo error cuando intentaba introducir los datos del inicio por segunda vez, después de un buen rato a lo único que llegué y que solucionó el problema fue establecer de nuevo la conexión antes de enviar los datos al servidor. Por si acaso, no sé realmente si es lo ideal, pero es lo que me ayudo a solucionarlo.

@try-except
Copy link

try-except commented Dec 8, 2021

Es por el finally, estás cerrando la conexión en cada vuelta del while. Una vez se cierra un socket ya no se puede reutilizar.

Además creo que subiste la misma foto para el cliente y el servidor?

@jsilvalavin
Copy link
Author

A mi me pasaba exactamente el mismo error cuando intentaba introducir los datos del inicio por segunda vez, después de un buen rato a lo único que llegué y que solucionó el problema fue establecer de nuevo la conexión antes de enviar los datos al servidor. Por si acaso, no sé realmente si es lo ideal, pero es lo que me ayudo a solucionarlo.

veré eso, gracias!

@jsilvalavin
Copy link
Author

Es por el finally, estás cerrando la conexión en cada vuelta del while. Una vez se cierra un socket ya no se puede reutilizar.

Además creo que subiste la misma foto para el cliente y el servidor?

aah, entonces cuando debo cerrar el socket del servidor? mencionaron que debia hacerse
y sí, tienes razon ahi arregle las fotos jaja

@try-except
Copy link

try-except commented Dec 8, 2021

Puedes cerrar el socket del servidor cuando quieras, el problema es que en este snippet en específico tienes:

while True:
    try:
        socket_cliente, address = socket_servidor.accept()
        ...
    except:
         ...
    finally:
        socket_servidor.close()

Entonces en la primera vuelta del while cierras el socket y luego en la segunda vuelta intentas hacer accept, pero como el socket ya está cerrado te tira ese error. A lo mejor tendrías que ver cuándo salir del while y una vez fuera cerrar el socket

@jsilvalavin
Copy link
Author

Puedes cerrar el socket del servidor cuando quieras, el problema es que en este snippet en específico tienes:

while True:
    try:
        socket_cliente, address = socket_servidor.accept()
        ...
    except:
         ...
    finally:
        socket_servidor.close()

Entonces en la primera vuelta del while cierras el socket y luego en la segunda vuelta intentas hacer accept, pero como el socket ya está cerrado te tira ese error. A lo mejor tendrías que ver cuándo salir del while y una vez fuera cerrar el socket

Ya bacan, gracias!! Te pasaste en serio...
Porfin voy a poder partir armando el mono :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
resuelto Tarea 3 Dudas sobre la T3
Projects
None yet
Development

No branches or pull requests

4 participants