2009-09-20 6 views
0

Eh bien, c'est mon premier programme de test udp et je pense que je comprends maintenant un peu de celui-ci :) quelque manière que voici mon code jusqu'à présent:C# UDP vérifier si j'ai reçu le paquet entier?

static void Main(string[] args) 
     { 
      Socket udpSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); 
      udpSocket.Bind(new IPEndPoint(IPAddress.Any, 111)); 
      Console.WriteLine("Waiting for connection"); 
      byte[] buffer = new byte[1024*64]; 
      int count = udpSocket.Receive(buffer); 
      IPEndPoint ipEndPoint = new IPEndPoint(IPAddress.Any, 111); 
      EndPoint endPoint = (EndPoint)ipEndPoint; 
      udpSocket.ReceiveFrom(buffer, ref endPoint); 

      Console.WriteLine("Message recived from, " + endPoint.ToString() + " data length: " + count); 
      Console.ReadKey(); 

     } 

mais comment puis-je faire en sorte que je suis toute paquet?

Répondre

3

Vous avez de la place pour des paquets jusqu'à 64 k octets, ce qui correspond à la taille maximale d'un paquet UDP. Vous lirez toujours le paquet entier.

-1

Le mieux est de vérifier le champ de longueur dans le UDP header pour voir si vous avez assez d'octets.

+0

Eh bien je n'ai aucune idée de comment je ferais cela? – Peter