Recientemente, durante la lectura de un Socket Programming HOWTO la sección siguiente me llamó la atención:Socket Protocolo Fundamentos
Pero si va a volver a utilizar el enchufe para una nueva transferencia, tiene que darse cuenta de que no hay "EOT" (Fin de la transferencia) en un socket. Repito: si un socket send o recv regresa después de manejar 0 bytes, la conexión se ha roto. Si la conexión no se ha roto, puede esperar a recibir una llamada para siempre, porque el conector no le dirá que no hay nada más que leer (por ahora). Ahora bien, si piensa en eso un poco, se dará cuenta de una verdad fundamental de los sockets: los mensajes deben ser de longitud fija (yuck), o ser delimitados (shrug), o indicar cuánto tiempo son (mucho mejor) o finalizando la conexión. La elección es totalmente suya, (pero algunas formas son más adecuadas que otras).
En esta sección se destacan 4 posibilidades de cómo se puede escribir un "protocolo" de socket para pasar mensajes. Mi pregunta es, ¿cuál es el método preferido para usar en aplicaciones reales?
¿Es generalmente mejor incluir el tamaño del mensaje con cada mensaje (presumiblemente en un encabezado), como afirma el artículo más o menos? ¿Hay alguna situación en la que otro método sea preferible?
El enlace anterior está roto. – cdosborn
Se trata de la programación de socket python, el nuevo enlace es https://docs.python.org/2/howto/sockets.html –