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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top