如何使用UDP协议顺序获取数据包?

时间:2012-01-17 09:57:25

标签: c# sockets udp packet sequential

我在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);
}

但我的问题是我收到的数据包不按顺序排列。我希望以顺序方式接收它们。请帮帮我。谢谢。

2 个答案:

答案 0 :(得分:5)

UDP不保证您发送的数据顺序。这是“火与忘记”。如果需要将数据保存在有序流中,则需要使用TCP。

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

答案 1 :(得分:1)

此链接可能会有所帮助

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中),另一个是接收者(在客户端PC中)。 发件人中提到的端口应与接收器中的端口相同。

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

单击发件人中的“发送”按钮,文本框中的数据将按顺序发送给接收者。

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

相关问题