控制将发送UDP消息的网卡
本文关键字:消息 网卡 UDP 控制 | 更新日期: 2023-09-27 18:22:17
在我的机器上,我有两张网卡。我需要发送2个udp消息,但每个消息都将通过不同的网卡发送。
我该怎么做?
您需要一些方法来识别网络接口。一种方法是使用它们的名称:
var networkInterfaceNames = new HashSet<string>() {
"Local Area Connection",
"Loopback Pseudo-Interface 1"
};
然后您需要获取这些接口的本地IP地址。我假设您想要使用IPv4,并且您的接口已经被分配了IPv4地址(AddressFamily.InterNetwork
):
var localIpAddresses = NetworkInterface
.GetAllNetworkInterfaces()
.Where(ni => networkInterfaceNames.Contains(ni.Name))
.Select(
ni => ni
.GetIPProperties()
.UnicastAddresses
.First(ua => ua.Address.AddressFamily == AddressFamily.InterNetwork)
);
然后,您需要使用这些本地端点发送UDP数据包。一种方法是使用UdpClient
:
foreach (var localIpAddress in localIpAddresses) {
const Int32 LocalPort = 1234;
var localEndPoint = new IPEndPoint(localIpAddress.Address, LocalPort);
using (var udpClient = new UdpClient(localEndPoint)) {
const Int32 RemotePort = 4321;
var remoteEndPoint = new IPEndPoint(IPAddress.Parse("10.20.30.40"), RemotePort);
Byte[] payload = ...
udpClient.Send(payload, payload.Length, remoteEndPoint);
}
}