Question

En C #, afin d'utiliser la méthode UdpClient.Send () je dois fournir comme l'un des paramètres le nombre d'octets que je vous envoie.

Comment puis-je calculer le nombre d'octets dans un datagramme avant de l'envoyer?

Était-ce utile?

La solution

On passe UdpClient.Send () un tableau d'octets (byte []), une taille de nombre entier, et un IPEndPoint. Si vous envoyez le tableau entier d'octets, rien de plus et rien de moins, que la charge utile de votre datagrammes, vous pouvez simplement utiliser la propriété Longueur des tableaux comme suit:

UdpClient udpClient = new UdpClient();
IPAddress ipAddress = Dns.Resolve("www.contoso.com").AddressList[0];
IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, 11004);    

Byte[] sendBytes = Encoding.ASCII.GetBytes("Is anybody there?");
try{
    udpClient.Send(sendBytes, sendBytes.Length, ipEndPoint);
}
catch ( Exception e ){
    Console.WriteLine(e.ToString());    
}

Peut-être la confusion ici est que vous pensez que vous devez compter le nombre de bits qui seront envoyés sur le fil? Ce qui est nécessaire est en fait juste la taille de la charge utile (la partie du tableau d'octets à condition que vous voulez vraiment envoyer dans ce datagrammes). La bibliothèque fera le reste.

Exemples et informations .

Autres conseils

Je ne sais pas quelle langue que vous utilisez pour impement ce client UDP. En C ++, opérateur sizeof fournit le nombre d'octets. Autre approche serait d'utiliser strlen () ou leurs variantes unicode et multiplier par la taille du type de données.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top