إرسال المخزن المؤقت Tchar مع Send (Sock ، Wszbuffer ، ...)؟
-
30-09-2019 - |
سؤال
لدي رسالة XML واسعة الحجم التي أحتاج إلى إرسال مقبس Win32 في C ++.
TCHAR wszBuffer[1024];
هل علي أن sprintf(szSendBuffer, "%S", wszBuffer)
المخزن المؤقت للشخصية الواسعة إلى أ char
صفيف قبل إرساله؟
ما هي الطريقة الصحيحة لإرسال هذا؟
المحلول
تمرير WszBuffer مباشرة إلى وظيفة المقبس ، ويلقيها إلى char * ، مع الطول = sizeof (wszbuffer) ، أو 1024 * sizeof (tchar). في هذه الحالة ، سيتم إرسال المخزن المؤقت كما هو.
إذا كنت ترغب في إرسال هذا النص كسلسلة ANSI ، قم بتحويله بواسطة أي وظيفة تحويل السلسلة. Sprintf على ما يرام ، طريقة أخرى هي W2A. ولكن قد تضيع بعض المعلومات.
نصائح أخرى
نظرًا لأنك تتعامل مع XML ، فأنت بحاجة إلى تشفيرها في UTF-8 أو غيرها من ترميز حرف XML (وتحديد هذا الترميز في مقدمة XML) قبل إرساله عبر المقبس.
يستخدم WideCharToMultiByte
لتحويله إلى UTF-8 (أو أي شيء آخر char
-الترميز المستند إلى ، طالما كنت تعلن ذلك في ملف XML).
يمكنك ببساطة إلقاءها على شار*. على الطرف الآخر ، يمكنك ببساطة إلقاء المخزن المؤقت المستلم إلى WCHAR_T*.