当前位置:  开发笔记 > 编程语言 > 正文

控制发送哪个网卡TCP/IP消息

如何解决《控制发送哪个网卡TCP/IP消息》经验,为你挑选了1个好方法。

我目前正在研究的系统包括一台运行XP的控制器PC,其中.Net 2连接到一组嵌入式系统.所有这些组件都通过以太网网络相互通信.我目前正在XP计算机上使用TcpClient.Connect打开与嵌入式系统的连接以发送TCP/IP消息.

我现在必须将XP计算机连接到外部网络以发送处理数据,因此XP计算机上现在有两个网卡.但是,发送到外部网络的消息不得出现在将嵌入式系统连接在一起的网络上(不想占用带宽),并且到嵌入式系统的消息不得出现在外部网络上.

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

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

Skizz



1> Hath..:

尝试使用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

推荐阅读
地之南_816
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有