Hola que tal? Tengo alguna duda con respecto al uso de los sockets, que vi que se hace de forma diferente en algunos exámenes.
- Vi que en algunos exámenes, en lugar de hacer socket.receive() o socket.send() hace socket.readline (o socket.read) o socket.writeln. Según entiendo la API, si uso la API de socket debería siempre hacer receive o send es verdad? Existe algún caso en el que se deba usar read o write con un socket? (tal vez al recibir o enviar comandos del estilo "ERROR \n")
- Relacionado a esto, en algunos casos he visto que los receive se hacen en una iteración do while y otras veces simplemente se hace
data, err = socket.receive()
El do while puedo entenderlo si se hace en por ejemplo peticiones http donde si se le responde un índex.html sería muy grande para enviarlo en un solo paquete, pero hay algún criterio en especial para decidir por una opción u otra? Perjudica una opción o la otra al momento de la corrección?
- Según entiendo las primitivas, al inicializar un socket udp no se le realiza un bind() (a diferencia de tcp), estoy en lo correcto?
- En el examen de julio 2017, en una parte de la solución inicializa un socket udp de la siguiente manera:
u = socket.udp()
u:setsockname(‘*’, 1234)
Muchas de estas preguntas las hago porque, además de tener las dudas, vi en el foro que se debe respetar el uso de la API de socket y entiendo que en soluciones viejas puede no ser del todo correcto el uso de estas.
Muchas gracias!
Saludos.