繁体   English   中英

如何使用C#跳过从套接字收到的后续byte []

[英]How to skip the subsequent byte[] received from socket using c#

我在线程内部使用下面的函数通过套接字接收byte []。 由于我的机器有两个网络适配器,因此它两次接收到byte []。 我想跳过随后收到的相同byte []。

我应该怎么做才能做到这一点?

public void Receiver()
{

        strMultpileBatchString = "";
        string mcastGroup = ReceiverIP;
        string port = ReceiverPort;

        //Declare the socket object.
        Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
        //Initialize the end point of the receiver socket.
        IPEndPoint ipep = new IPEndPoint(IPAddress.Any, int.Parse(port));
        s.SetSocketOption(SocketOptionLevel.Udp, SocketOptionName.NoDelay, 1);
        s.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, 1);
        s.Bind(ipep);
        s.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.MulticastTimeToLive, 0);
        IPAddress ip = IPAddress.Parse(mcastGroup);
        s.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, new MulticastOption(ip));


        while (true)
        {
            byte[] b = new byte[BytesSize];
        }
}
IPEndPoint ipep = new IPEndPoint(IPAddress.Any, int.Parse(port));        

我认为这是导致IPAddress问题的原因。任何尝试尝试指定特定的IP(两个网卡之一)

MSDN

“在调用Bind之前,必须首先创建要从中进行数据通信的本地IPEndPoint。如果您不在乎分配了哪个本地地址,则可以使用IPAddress .. ::。Any作为address参数创建IPEndPoint,并且基础服务提供商将分配最合适的网络地址。如果您具有多个网络接口,这可能有助于简化您的应用程序。”

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM