gpt4 book ai didi

c# - 控制在哪个网卡上发送 TCP/IP 消息

转载 作者:太空狗 更新时间:2023-10-30 00:22:42 25 4
gpt4 key购买 nike

我目前正在使用的系统由一台运行 XP 的 Controller PC 和 .Net 2 连接到一组嵌入式系统组成。所有这些组件都通过以太网相互通信。我目前在 XP 计算机上使用 TcpClient.Connect 打开到嵌入式系统的连接以发送 TCP/IP 消息。

我现在XP电脑要连接外网,把处理数据发到,所以XP电脑上现在有两 block 网卡。但是,发送到外部网络的消息一定不能出现在将嵌入式系统连接在一起的网络上(不想消耗带宽)并且发送到嵌入式系统的消息一定不能出现在外部网络上。

因此,我的断言是,当使用 TcpClient.Connect 方法时,发送到定义的 IP 地址的消息会在两个网卡上发送。

如何指定通过哪些物理网卡消息发送,最好使用 .Net 网络 API。如果 .Net 中不存在这样的方法,那么我总是可以 P/Invoke Win32 API。

斯基兹

最佳答案

尝试为您的客户端使用 Socket 而不是 TcpClient 类。

然后您可以使用 Socket.Bind 来定位您的本地网络适配器

    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

关于c# - 控制在哪个网卡上发送 TCP/IP 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49507/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com