Cuando uso socket (tcp / ip) para redes de valor de sensor (por ejemplo, giroscopio o acelerómetro), ¿es efectivo establecer el tamaño del búfer?

Si su objetivo es el procesamiento casi en tiempo real, no debe usar TCP. Utilice UDP en su lugar, especialmente si está dentro de alguna red privada. Entonces, el riesgo de que los paquetes se pierdan por un pedido incorrecto es muy pequeño. Pero hay razones por las que es posible que desee utilizar TCP, incluida la conveniencia del desarrollador, la falta de soporte para UDP en algunas redes (detrás de firewalls, por ejemplo), entrega garantizada, etc.

Suponiendo que necesita usar TCP, debe comprender que, de hecho, hay dos lados en esta pregunta: el transmisor y el receptor. El hecho de que pueda forzar al transmisor a enviar el paquete inmediatamente no significa que la pila TCP en el receptor hará lo mismo. Eso es algo que la mayoría de la gente olvida tener en cuenta.

Otro problema es que el búfer TCP tiene sorprendentemente poco efecto en este escenario. Los buffers se utilizan para otros fines en TCP, y para lograr lo que desea, debe comprender mejor el efecto de los indicadores TCP.

Entonces, en su caso, existen dos técnicas principales para obtener un mejor rendimiento de una conexión TCP. El primero es configurar el indicador TCP_NODELAY, que se ocupa del lado de la transmisión, desactivando el algoritmo de Nagle.

Para lidiar con el segundo problema (asegurarse de que el paquete se entregue a la aplicación de inmediato), existe el indicador PSH. Hay una buena lectura en el blog de Packetlife (Banderas TCP: PSH y URG).

Dicho esto, TCP es mejor dejarlo en sus valores predeterminados. Pero si necesita hacer algo diferente, debe estudiar mucho. En algunos casos, realmente necesita leer la implementación para comprender lo que está sucediendo. Para una comprensión más simple, el rastreo de paquetes de aplicaciones similares es una buena manera de aprender también.

More Interesting

Si se recibe un paquete que no está destinado a esa subred, ¿a dónde será dirigido?

¿Puedo obtener mi dirección IP de mi cuenta de correo electrónico?

¿Cuál es el mejor ocultador de IP?

Cómo usar el protocolo Telnet para acceder a servidores remotos y ejecutar solicitudes HTTP

¿Dónde puedo obtener una base de datos de direcciones IP de los propietarios?

¿Cómo se debe detectar y conmutar por error una gran pérdida de paquetes en una red de transportista de tránsito?

¿Cómo puede una aplicación de usuario leer directamente desde una tarjeta de interfaz de red cuando usa la tarjeta Solarflare?

¿Hay alguna forma de modificar todos los paquetes que salen de mi computadora?

¿Cuáles son las razones por las que la mayoría de las empresas e instituciones utilizan TCP, no UDP, para llamadas de videoconferencia o para transmisión en vivo?

Cómo averiguar quién ha estado usando su dirección IP

En la comunicación de datos y las redes, usamos ipv4 para el direccionamiento, pero ¿por qué tenemos que avanzar hacia IPv6 si NAT puede convertir todas las IP privadas en IP públicas?

¿Por qué los paquetes UDP se pierden en Internet?

Cómo encontrar mi teléfono con mi dirección IP

¿Cuál es la diferencia básica entre HSRP y VRRP en términos de dirección IP virtual?

¿Cuántos mensajes totales se envían directamente desde y hacia el cliente DNS y el servidor cliente DNS cuando un cliente necesita un nombre resuelto en una dirección IP correspondiente?