سؤال

في C #، من أجل استخدام طريقة UDPClient.send ()، يجب أن أقدم واحدة من المعلمات عدد البايتات التي أرسلها.

كيف يمكنني حساب عدد البايتات في مخطط بيانات قبل إرسالها؟

هل كانت مفيدة؟

المحلول

يمكنك تمرير UDPClient.Send () مجموعة من البايتات (البايت [])، وحجم صحيح، و ipendpoint. إذا كنت ترغب في إرسال صفيف البايت بأكملها، فلا شيء أقل ولا شيء أقل، حيث أن حمولة Datagram الخاصة بك، يمكنك فقط استخدام خاصية الطول للمصفوفات كما يلي:

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());    
}

ربما يكون الارتباك هنا هو أنك تعتقد أن عليك حساب عدد البتات التي سيتم إرسالها عبر السلك؟ ما هو مطلوب في الواقع هو فقط حجم الحمولة (جزء من صفيف البايت المقدمة التي تريد إرسالها بالفعل في هذا المخطط البيانات). ستؤدي المكتبة الباقي.

أمثلة ومعلومات هنا.

نصائح أخرى

لست متأكدا من اللغة التي تستخدمها لثوقة عميل UDP هذا. في C ++، يوفر مشغل Sizeof عدد البايتات. سيكون النهج الآخر هو استخدام Strlen () أو متغيرات Unicode وضربها بحجم نوع البيانات.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top