2012-04-20 16 views
7

(I se buscó antes de preguntar, pero sólo pude encontrar rápidamente con técnicas de Java IPC)¿La forma más rápida de enviar paquetes entre dos computadoras conectadas?

¿Cuál es la manera más rápida en Java para enviar un paquete entre dos equipos en Java (conectado mediante un cable Ethernet), en Windows y Linux (si la respuesta varía por sistema operativo)?

He adivinado que UDP sería más rápido que TCP (debido al esquema de handshake de tres vías del TCP), pero ¿hay alguna otra consideración que deba hacerse?

¿Estamos limitados a enchufes (respuesta específica de Unix) o hay alternativas? ¿Qué tecnologías se pueden usar para enviar/recibir el UDP lo más rápido posible?

Del mismo modo, ¿hay formas particulares de alto rendimiento para recibir y leer los datos enviados desde otra computadora?

+4

Si va a votar "cerrar", al menos tenga la decencia de explicar por qué. Esta pregunta es perfectamente válida. – user997112

+1

Defina "Rápido". ¿Estás preocupado por la latencia o el rendimiento? UDP está bien si no te importa una pérdida ocasional de datos. – user949300

+1

@ user949300 Latencia es más importante – user997112

Respuesta

2

Bueno, no hay mucho entre TCP/UDP si ignora la latencia de conexión/desconexión. Si su protocolo puede mantener activada una conexión TCP e inhabilitar optimizaciones inoportunas e inductoras de latencia como el algoritmo Nagle, no veo por qué TCP debería descartarse como una solución, aunque existe la ligera complicación de requerir un protocolo en la parte superior. para intercambiar cualquier mensaje más grande que un byte.

La mayoría de la tasa de red y el rendimiento de latencia generalmente están limitados por las restricciones de phy y de ruta de todos modos. Si miramos un paquete entre dos pares, no importa demasiado qué protocolo IP utilices desde los enrutadores dudosos, los enlaces satelitales c-limitados, las fibras congestionadas, los enlaces ruidosos y retransmitidos de microondas/wifi/3G, y la basura pasada- Kilometro de cobre te dejará sin aliento de todos modos.

+1

Supongo que deshabilitar el algoritmo nagle requeriría copiar y editar una implementación de TCP. – user997112

+0

@ user997112 - no, es una opción de socket - puede desactivarlo. –

+0

Gracias Martin. Supongo que esto solo se puede configurar en Unix. – user997112

0

La respuesta es a través de courier pigeon. Otras alternativas incluyen sneakernet y autonet. Prefiero bicicletanet.

Cuestiones relacionadas