سؤال

أحاول إرسال سلسلة تم إنهاءها باستخدام 0 إلى مقبس TCP ، لكن يبدو أن 0 لا يصل أبدًا إلى وجهته.

باستخدام هذا الرمز:

NSString* s=@"<b/> \0_";

uint8_t *buf = (uint8_t *)[s UTF8String];

int resCode = [outputStream write:buf maxLength:strlen((char *)buf)];

يبدو أنني فقط أرسل @"<b/> ". ربما \0 يُنظر إليه على أنه نهاية uint8_t.

هل يمكن لأحد أن يخبرني كيف ينبغي أن يتم ذلك ؟؟

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

المحلول

بالطبع يرسله بدون 0. strlen سيعود لك طول السلسلة ، وليس حساب المحطات الفارغة. قم بتغييره إلى شيء مثل

[outputStream write:buf maxLength:(strlen((char *)buf) + 1)]

نصائح أخرى

لماذا تريد إرسال '] 0

لا يمكنك استخدام أي حرف آخر ... لأن شخصية " 0" تعامل دائمًا على أنها شخصية إنهاء!

وإذا كنت تريد حقًا إرسالها بهذه الطريقة ، فأرسل حرفًا مختلفًا ورسم خريطة إلى " 0" عند استلامها!

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