Berechnen Anzahl von Bytes in C # UdpClient.Send () Datagramm
Frage
C #, um die UdpClient.Send () Methode I als einer der Parameter die Anzahl der Bytes bereitstellen muss ich bin zu senden.
Wie berechne ich die Anzahl der Bytes in einem Datagramm vor dem Senden?
Lösung
Sie passieren UdpClient.Send () ein Array von Bytes (Byte []), eine ganzzahlige Größe, und eine IPEndPoint. Wenn Sie das gesamte Byte-Array senden, nicht mehr und nicht weniger, als Datagramm Nutzlast, können Sie einfach die Eigenschaft Länge von Arrays verwenden wie folgt:
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());
}
Vielleicht hier die Verwirrung ist, dass Sie denken, Sie haben die Anzahl der Bits zu zählen, die über den Draht geschickt wird? Was tatsächlich erforderlich ist, ist nur die Größe der Nutzlast (dem Teil der bereitgestellten Byte-Array Sie tatsächlich in diesem Datagramm gesendet werden soll). Die Bibliothek wird den Rest.
Beispiele und Informationen hier .
Andere Tipps
Nicht sicher, welche Sprache Sie dieses UDP-Client impement verwenden. In C ++ stellt sizeof Bediener die Anzahl von Bytes. Anderer Ansatz wäre strlen () zu verwenden oder ihre Unicode-Varianten und multiplizieren Sie mit der Datentyp Größe.