خطأ sigpipe في iOS4 عندما يعمل التطبيق الخلفية وشاشة القفل

StackOverflow https://stackoverflow.com/questions/4085368

سؤال

أستخدم مقبس BSD في تطبيقي لإرسال وتلقي البيانات على iPhone4 (iOS4.1) ، هناك ثلاث حالات في تطبيقي:

  1. يعمل التطبيق في مقدمة وأقفال على الشاشة ، إنه جيد.
  2. يعمل التطبيق في الخلفية والشاشة لا تقفل ، لا بأس أيضًا (أستخدم NSStream لإرسال وتلقي البيانات لـ App App على قيد الحياة في الخلفية ، فهو يعمل بشكل جيد.)
  3. يعمل التطبيق في الخلفية وأقفال الشاشة ، وتطبيقًا يعمل بشكل جيد ولكن احصل دائمًا على خطأ SIGPipe عندما يحاول التطبيق استدعاء SendTO () أو إرسال () من خلال مقبس UDP أو TCP.

أنا أبحث كثيرًا ولكن لا أحصل على شيء مفيد ، من هنا أعرف ماهية SIGPipe ، وأنا أستخدم SetSockopt (Sock ، Sol_socket ، so_nosigpipe ، (void *) & on ، sizeof (int)) لتجنب خروج التطبيق بشكل غير طبيعي. لكنني ما زلت لا أعرف لماذا حدث هذا الخطأ فقط في الموقف 3 وكيفية إرسال البيانات بشكل طبيعي من خلال مقبس BSD في هذا الموقف.


لقد حاولت تجديد وإعادة الاتصال ولكنها لا تعمل ، فهي لا تزال تحصل على خطأ sigpipe. أعتقد أنه ربما لا يمكن لجميع مآخذ BSD الحصول على وصول داخلي في الموقف 3 (بقدر ما نعلم أن مقبس BSD لا يمكنه تنشيط WiFi أو اتصال الحافة في iOS) ، يمكن لأي شخص مساعدتي أو إعطائي بعض الاقتراحات؟ وآسف على لغتي الإنجليزية المكسورة^.^، شكرًا جزيلاً لك.

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

المحلول

أنا أبحث على Google ووجدت سؤالي الخاص قبل 10 أشهر ، وهذا مثير للاهتمام. كان لدي بالفعل حل للتطبيق استمر في التشغيل في الخلفية ، و setSockopt (Sock ، Sol_socket ، so_nosigpipe ، (void *) & on ، sizeof (int)) مفيدة والتي ستتجاهل خطأ sigpipe 13.

يحدث هذا الخطأ عندما فقد المقبس بالفعل الاتصال الفعلي ويظل يحاول كتابة البيانات ، من خلال WiFi أو 3G أو الملحق.

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