>  Q&A  >  본문

ios tcp socket操作问题

伊谢尔伦伊谢尔伦2717일 전332

모든 응답(2)나는 대답할 것이다

  • 高洛峰

    高洛峰2017-04-18 09:38:27

    먼저 귀하의 질문에 답변을 드릴 수 없음을 알려드립니다. 인터넷에서 작업하는 경우 -1이 반환되는 이유에 대한 간단한 질문은 좋은 질문이 아닐 수 있다는 점을 알아야 합니다.

    둘째, 다른 질문에 답변해 주시고 제 개인적인 견해를 말씀드리겠습니다.

    N년차에 소셜 앱을 만드는 스타트업 회사에 처음 입사했을 때 POSIX를 사용했고 iOS3.1.3~iOS4 시스템을 지원했습니다. 저희 매니저님이 iOS와 Android 둘 다에서 IM을 바꿔달라고 하셨습니다. 연결 끊김, 재교육, 멈춤, 메모리, 스레드 문제가 많았습니다... 저는 크로스 플랫폼을 위해 POSIX 개발을 첫 번째 선택으로 선택했습니다. 그 과정에서 정보가 유실되기도 했고, 서버와 소통하고 배우기 위해 밤샘 작업을 하는 경우도 많았다. 5~6년 동안 온라인에서 수천만 페이지를 테스트한 끝에 서버 코드 세트가 축적됐다. 하지만 계속 고집하지 않고 결국 CFNetwork를 선택하게 되었습니다. 나중에 iOS 업그레이드로 인해 여러 가지 버그가 발생하여 지금까지 GCDAsyncSocket을 사용하고 있습니다. 나중에 우리는 오디오 및 비디오 프로토콜도 개발했고 클라이언트는 자체 서버 등을 구축했지만 그 중 누구도 POSIX를 사용하지 않았습니다.

    왜 POSIX, 크로스 플랫폼을 사용해야 하는지 신중하게 생각해야 한다고 말씀드리고 싶습니다. 맞춤형 프로토콜? 그렇지 않은 경우 고급 API를 선택하거나 성숙한 타사 라이브러리를 사용하는 것이 좋습니다.

    iOS의 POSIX에는 항상 많은 함정이 있었습니다. 충분한 경험, Apple 문서에 대한 익숙함, 시스템 업데이트 및 완전한 테스트가 필요합니다. POSIX를 선택한다는 것은 IP를 직접 처리하고, IPv4/IPv6/IPv6만 지원하고, Wi-Fi/WWAN 전환, IP 도달 가능성, VPN, 스레드 안전, 메모리, 다양한 네트워크 이상 현상, 일부 마법의 네트워크 "일시 중단" 등을 처리하는 것을 의미하기 때문입니다. .. iOS는 내년에 https를 필수로 만들 예정이므로 이에 따라 업데이트해야 합니다.

    Apple의 공식 네트워크 프로그래밍 문서를 한두 번 읽어야 합니다. 원하는 소켓 라이브러리는 오래 전에 iOS를 지원하는 여러 포팅 프로젝트를 본 적이 있는데, 지금은 유지 관리되지 않을 수 있습니다. 오픈 소스 코드 호스팅 웹사이트와 Google 그룹에서 검색할 수 있습니다. 최근에 뭔가를 테스트하고 며칠 동안 세그먼트 오류를 ​​실행해 본 결과 현재와 미래에 직면하게 될 질문에 대한 답변을 여기에서 찾을 수 없으며 stackoverflow에서도 찾지 못할 수도 있습니다. . 배우고 문제를 해결하는 방법은 다른 사람의 코드를 보는 것입니다. Apple의 오픈 소스 코드는 보물입니다.

    내가 말한 것이 진지할 수도 있고, 원하는 기능이 생각만큼 복잡하지 않을 수도 있습니다. 다시 말하지만, 크로스 플랫폼을 사용하거나 사용자 정의 프로토콜을 구현해야 하고, 구덩이를 채울 충분한 시간이 없다면, 그런 다음 POSIX로 플레이하고, 그렇지 않으면 고급 API 또는 타사 라이브러리를 선택하십시오.

    친절한 알림: 생명을 소중히 여기세요.

    회신하다
    0
  • PHP中文网

    PHP中文网2017-04-18 09:38:27

    쓰기가 -1을 반환한 후 errno를 사용하여 오류 코드를 가져오세요

    회신하다
    0
  • 취소회신하다