¿Cómo se obtiene el número máximo de bytes que se pueden pasar a una llamada sendto(..)
para un socket abierto como un puerto UDP?Longitud máxima de memoria intermedia para sendto?
Respuesta
Como UDP no está orientado a la conexión, no hay forma de indicar que dos paquetes pertenecen juntos. Como resultado, está limitado por el tamaño máximo de un único paquete IP (65535). Los datos que puede enviar son algo menores, porque el tamaño del paquete IP también incluye el encabezado IP (generalmente 20 bytes) y el encabezado UDP (8 bytes).
Tenga en cuenta que este paquete de IP se puede fragmentar para que quepa en paquetes más pequeños (por ejemplo, ~ 1500 bytes para ethernet).
No tengo conocimiento de que ningún SO lo restrinja más.
Utilice getsockopt(). This site tiene un buen desglose del uso y las opciones que puede recuperar.
En Windows, puede hacerlo:
int optlen = sizeof(int); int optval; getsockopt(socket, SOL_SOCKET, SO_MAX_MSG_SIZE, (int *)&optval, &optlen);
Para Linux, de acuerdo con la página del manual UDP, el kernel utilizar el descubrimiento de MTU (se comprobará cuál es el tamaño máximo de paquete UDP es entre aquí y el destino , y elija eso), o si el descubrimiento de MTU está desactivado, establecerá el tamaño máximo para la MTU de la interfaz y fragmentará algo más grande. Si está enviando a través de Ethernet, la MTU típica es de 1500 bytes.
En Mac OS X existen diferentes valores para enviar (SO_SNDBUF) y recibir (SO_RCVBUF). Este es el tamaño del búfer de emisión (hombre getsockopt):
getsockopt (calcetín, SOL_SOCKET, SO_SNDBUF, (int *) & optval, & lonopc);
Intentar enviar un mensaje más grande (en Leopard 9216 octetos en UDP enviado a través del bucle de retorno local) dará como resultado "Mensaje demasiado largo/EMSGSIZE".
- 1. Longitud máxima de byte []?
- 2. Longitud máxima para la cola de scala
- 3. carga máxima longitud
- 4. Establecer UITextField Longitud máxima
- 5. Longitud máxima del identificador
- 6. ¿Se necesita más memoria intermedia?
- 7. Longitud máxima para un vector en R
- 8. Fuerza longitud máxima para cadena en PostgreSQL
- 9. Longitud máxima de un openID
- 10. Longitud máxima para entrada/salida MD5
- 11. Longitud máxima para HTML <textarea>
- 12. SQLAlchemy: longitud máxima de columna
- 13. CODIGO QR longitud máxima de carga
- 14. Longitud máxima del título Atributo
- 15. MySQL y GROUP_CONCAT() longitud máxima
- 16. ¿Objetos de memoria intermedia o texturas regulares?
- 17. Mostrar número de memoria intermedia actual
- 18. Longitud máxima predeterminada cadena xsd
- 19. ¿Máxima memoria alcanzable .NET?
- 20. Memoria máxima para 64 bits Java
- 21. Longitud máxima de ** parámetros de argv
- 22. Longitud máxima de fragmentos de URL (hash)
- 23. Nombre de usuario de Windows longitud máxima
- 24. ¿Cuánta memoria intermedia tienen NetworkStream y TcpClient?
- 25. Longitud máxima de la propiedad FormsAuthenticationTicket.UserData
- 26. MVC3: longitud máxima de la solicitud superó
- 27. vim: mover a la memoria intermedia?
- 28. Longitud máxima de una consulta SQL
- 29. Longitud máxima de la lista para mezclar con Python random.shuffle?
- 30. Longitud máxima para el campo de texto largo