velocidad una tarjeta servidor protocolo por modelo internet dúplex configurar conectar comunicacion como cable aumentar c# .net networking

c# - una - Controlar qué tarjeta de red se envía el mensaje TCP/IP



servidor tcp ip c# (4)

Básicamente, una vez que el método TcpClient.Connect haya sido exitoso, habrá creado un mapeo entre la dirección MAC física del sistema integrado y la ruta que debería llevar a esa dirección (es decir, qué tarjeta de red usar).

No creo que todos los mensajes enviados a través de la conexión TcpClient se envíen a través de ambas tarjetas de red.

¿Tiene algún dato que sugiera lo contrario o es adivinanzas harinosas?

El sistema en el que estoy trabajando actualmente consiste en una PC controladora que ejecuta XP con .Net 2 conectado a un conjunto de sistemas integrados. Todos estos componentes se comunican entre sí a través de una red ethernet. Actualmente estoy usando TcpClient.Connect en la computadora XP para abrir una conexión a los sistemas integrados para enviar mensajes TCP / IP.

Ahora tengo que conectar la computadora XP a una red externa para enviar datos de procesamiento, por lo que ahora hay dos tarjetas de red en la computadora XP. Sin embargo, los mensajes enviados a la red externa no deben aparecer en la red que conecta los sistemas integrados (no desea consumir el ancho de banda) y los mensajes a los sistemas integrados no deben aparecer en la red externa.

Entonces, la afirmación que estoy haciendo es que los mensajes enviados a una dirección IP definida se envían en ambas tarjetas de red cuando se usa el método TcpClient.Connect.

¿Cómo especifico a qué mensajes de la tarjeta de red física se envían, idealmente usando la API de redes .Net? Si no existe tal método en .Net, entonces siempre puedo P / Invocar la API de Win32.

Skizz


Intente usar un Socket para su cliente en lugar de la clase TcpClient.

Entonces puede usar Socket.Bind para apuntar a su adaptador de red local

int port = 1234; IPHostEntry entry = Dns.GetHostEntry(Dns.GetHostName()); //find ip address for your adapter here IPAddress localAddress = entry.AddressList.FirstOrDefault(); IPEndPoint localEndPoint = new IPEndPoint(localAddress, port); //use socket instead of a TcpClient Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); //binds client to the local end point client.Bind(localEndPoint);

http://msdn.microsoft.com/en-us/library/system.net.sockets.socket.bind.aspx


Xp mantiene una tabla de enrutamiento donde asigna rangos de direcciones IP a redes y puertas de enlace.

puede ver la tabla usando "route print", con "route add" puede agregar una ruta a su dispositivo incorporado.


Si tiene dos tarjetas de red en la máquina, entonces no debería haber un problema. El comportamiento normal de IP debe garantizar que el tráfico de su red "privada" (sistemas integrados en este caso) sea independiente de su red pública, sin que tenga que hacer nada en su código. Todo lo que se requiere es que las dos redes estén en diferentes subredes IP y que su NIC ''pública'' sea la predeterminada.

Suponiendo que sus dos NIC están configurados de la siguiente manera:

NIC A (Public): 192.168.1.10 mask 255.255.255.0 NIC B (Private): 192.168.5.10 mask 255.255.255.0

La única configuración que necesita verificar es que NIC A es su predeterminado. Cuando intenta enviar paquetes a cualquier dirección en su red privada (192.168.50.0 - 192.168.50.255), su pila de IP buscará en la tabla de enrutamiento y verá una red directamente conectada, y reenviará el tráfico a través de la NIC privada. Cualquier tráfico a la red pública (directamente conectada) se enviará a NIC A, al igual que el tráfico a cualquier dirección para la que no tenga una ruta más específica en su tabla de enrutamiento.

Su tabla de enrutamiento (netstat -rn) debería verse más o menos así:

IPv4 Route Table =========================================================================== Active Routes: Network Destination Netmask Gateway Interface Metric 0.0.0.0 0.0.0.0 192.168.1.1 192.168.1.10 266 <<-- 127.0.0.0 255.0.0.0 On-link 127.0.0.1 306 127.0.0.1 255.255.255.255 On-link 127.0.0.1 306 127.255.255.255 255.255.255.255 On-link 127.0.0.1 306 169.254.0.0 255.255.0.0 On-link 192.168.1.10 286 169.254.255.255 255.255.255.255 On-link 192.168.1.10 266 192.168.1.0 255.255.255.0 On-link 192.168.1.10 266 192.168.1.10 255.255.255.255 On-link 192.168.1.10 266 192.168.1.255 255.255.255.255 On-link 192.168.1.10 266 192.168.5.0 255.255.255.0 On-link 192.168.5.10 266 192.168.5.10 255.255.255.255 On-link 192.168.5.10 266 192.168.5.255 255.255.255.255 On-link 192.168.5.10 266 255.255.255.255 255.255.255.255 On-link 192.168.1.10 276 255.255.255.255 255.255.255.255 On-link 192.168.5.10 276 ===========================================================================

También habrá algunas rutas de multidifusión (comenzando con 224) que se han omitido por brevedad. El ''<< -'' indica la ruta predeterminada, que debería estar usando la interfaz pública.