0

私は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);
}

しかし、私の問題は、私が取得しているパケットが順番に並んでいないことです。順番に受け取りたいです。助けてください。よろしくお願いします。

4

2 に答える 2

5

UDPは、送信するデータの順序について何も保証しません。それは「ファイアアンドフォーゲット」です。データを順序付けられたストリームに保持する必要がある場合は、TCPを使用する必要があります。

それ以外の場合は、データグラム自体に何らかのシーケンスIDを実装する必要があります。

于 2012-01-17T10:00:32.960 に答える
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つの部分があります。1つは送信者(一部のPC)で、もう1つは受信者(クライアントPC)です。送信者に記載されているポートは、受信者に記載されているポートと同じである必要があります。

送信者アプリケーションには、テキストボックスとボタン(送信)ボタンがあります。それぞれのPCで両方のプロジェクトを実行します。

送信者の[送信]ボタンをクリックすると、テキストボックスのデータが受信者に順番に送信されます。

それが役に立つことを願っています。ありがとうございました。

于 2012-01-17T10:36:15.553 に答える