Нет, невозможно использовать какие-либо классы C # - все они работают на слишком высоком уровне, чем на уровне TCP / IP (четные сокеты слишком высокого уровня). Стек Windows TCP / IP использует таблицу маршрутизации и метрики интерфейса, чтобы определить, какой интерфейс отправлять пакеты.
Вы можете увидеть, какой интерфейс для стека Windows TCP / IP определил лучший маршрут (который он будет использовать для отправки пакета), вызвав GetBestInterfaceEx () .
У бывшего работодателя мы пытались сделать что-то похожее, разделив трафик на разные сетевые карты, привязав сокет к IP-адресу карты, на которую мы хотели отправить трафик. Однако Windows будет отправлять трафик через NIC, который, по ее мнению, имеет лучший маршрут (NIC с IP-адресом, отличным от исходного). Это заняло немного царапин, прежде чем мы поняли, что происходит.
Так что если не делать что-то (возможно) с необработанными сокетами или libpcap (что будет насмешкой, вам придется создавать свои собственные обработчики TCP / IP и HTTP), вы не сможете сделать это в Windows.