【问题标题】:How to get packet sequentially using UDP protocol?如何使用UDP协议顺序获取数据包?
【发布时间】:2012-02-12 03:18:44
【问题描述】:

我正在用 c# 制作应用程序。我不断在 24097 端口上获取数据,并将该数据记录为

UdpClient client = null;
 IPEndPoint ipep = null;
 client = new UdpClient(24097); 
 client.Client.ReceiveBufferSize = 25000;
 ipep = new IPEndPoint(IPAddress.Any,24097);
while(flag)
{
  byte[] data= = client.Receive(ref ipep);
}

但我的问题是我收到的任何数据包都不是按顺序排列的。我想按顺序接收它们。请帮助我。提前致谢。

【问题讨论】:

    标签: c# sockets udp packet sequential


    【解决方案1】:

    UDP 不保证您发送的数据的顺序。这是“一劳永逸”。如果需要将数据保持在有序流中,则需要使用 TCP。

    否则,您需要在数据报本身中实现某种序列 ID。

    【讨论】:

    • :谢谢,但是如果我想对这些数据包进行排序,有什么办法吗?
    • 正如我在回答中提到的,如果您需要知道传入 UDP 数据包的顺序,则必须有一些信息(数据)在数据报本身中表明它们的顺序. UDP 协议无法知道发送的数据报的顺序。可能类似于使用数据报的前两个字节作为序列号;客户端每次加一。
    【解决方案2】:

    此链接可能会有所帮助

    http://www.codeproject.com/Articles/176722/Sending-messages-to-workstations-using-Socket-Prog/?display=PrintAll&fid=1618703&df=90&mpp=25&noise=3&prof=False&sort=Position&view=Quick

    此示例有 2 个部分。 第一个是发送者(在某些电脑中),另一个是接收者(在客户端电脑中)。 发送方中提及的端口应与接收方中的端口相同。

    发送者应用程序中有一个文本框和按钮(发送)按钮。 在各自的 PC 上运行这两个项目。

    点击发送方中的发送按钮后,文本框中的数据将依次发送到接收方。

    希望它有一些用处。谢谢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-21
      • 2018-02-18
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      • 1970-01-01
      相关资源
      最近更新 更多