أرسل NSString مع 0
-
27-09-2019 - |
سؤال
أحاول إرسال سلسلة تم إنهاءها باستخدام 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" عند استلامها!
لا تنتمي إلى StackOverflow