C#学习教程:控制发送哪些网卡TCP/IP信息嵌入式系统。所有这些组件都通过以太网相互通信。我目前正在XP计算机上使用TcpClient.Connect打开与嵌入式系统的连接以发送TCP/IP消息。我现在XP电脑要连接外网发送处理数据,所以我现在XP电脑上有两块网卡。但是,发送到外部网络的消息不得出现在将嵌入式系统连接在一起的网络上(不想占用带宽),并且发送到嵌入式系统的消息不得出现在外部网络上。所以我做出的断言是,当使用TcpClient.Connect方法时,发送到定义的IP地址的消息会在两个网卡上发送出去。如何指定通过.Net网络API发送哪些物理NIC消息。如果.Net中不存在这样的方法,我总是可以P/InvokeWin32API。Skizz尝试为您的客户端使用Socket而不是TcpClient类。然后您可以使用Socket.Bind来定位您的本地网络适配器intport=1234;IPHostEntry条目=Dns.GetHostEntry(Dns.GetHostName());//在此处为您的适配器查找IP地址IPAddresslocalAddress=entry.AddressList.FirstOrDefault();IPEndPointlocalEndPoint=newIPEndPoint(localAddress,port);//使用套接字代替TcpClientSocketclient=newSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);//将客户端绑定到本地端点client.Bind(localEndPoint);http://msdn.microsoft.com/en-us/library/system.net.sockets.socket.bind.aspx如果您的计算机上有两个网卡,应该没问题。正常的IP行为应该将“专用”网络(在本例中为嵌入式系统)的流量与公共网络分开,而无需在代码中做任何事情。所需要的只是两个网络位于不同的IP子网上,并且“公共”NIC是默认的。假设您的两个NIC配置如下:NICA(公共):192.168.1.10掩码255.255.255.0NICB(专用):192.168.5.10掩码255.255.255.0您需要验证的唯一配置是NICA是您的默认配置配置。当您尝试将数据包发送到专用网络中的任何地址(192.168.50.0-192.168.50.255)时,您的IP堆栈会查找路由表并查看直接连接的网络,并通过专用NIC转发流量。(直接连接的)公共网络的任何流量都将被发送到NICA,并且流量将被传送到路由表中没有更具体路由的任何地址。您的路由表(netstat-rn)应如下所示:IPv4路由表===================================================================================活跃Routes:NetworkDestinationNetmaskGatewayInterfaceMetric0.0.0.00.0.0.0192.168.1.1192.168.1.10266还会有一些多播路由(以224开头),为简洁起见省略。“<<-”表示默认路由,应该使用公共接口。基本上,一旦TcpClient.Connect方法成功,它就会在嵌入式系统的物理MAC地址和它应该到达该地址的路由(即要使用的NIC)之间创建一个映射。我不相信通过TcpClient连接发送的所有消息都会通过两个网卡发出。你有任何其他建议的数据,或者你在猜测吗?XP维护一个路由表,将IP地址范围映射到网络和网关。您可以使用“routeprint”查看表格,使用“routeadd”向嵌入式设备添加路由。以上就是C#学习教程的全部内容:控制哪个网卡发送TCP/IP消息共享。如果对你有用,需要了解更多C#学习教程,希望大家多加关注---本文收集自网络,不代表立场,如涉及侵权,请右击联系管理员删除。如需转载请注明出处:
