ホームページ  >  に質問  >  本文

ios tcp socket操作问题

伊谢尔伦伊谢尔伦2717日前334

全員に返信(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 のみをサポートし、Wifi/WWAN スイッチング、IP 到達可能性、VPN、スレッド セーフ、メモリ、さまざまなネットワーク異常、いくつかの魔法のネットワーク「サスペンド デス」などを処理することを意味するからです。 .. iOS は来年 https を必須にする予定なので、それに合わせてアップデートする必要があります。

    Apple の公式ネットワーク プログラミング ドキュメントを 1 回か 2 回読む必要があります。必要なソケット ライブラリについては、iOS をサポートするいくつかの移植プロジェクトを以前に見ましたが、現在はメンテナンスされていない可能性があります。オープン ソース コードのホスティング Web サイトや Google グループで検索できます。私は最近何かをテストし、数日間セグメントフォルトをプレイしたところです。私の現在の観察によると、現在および将来遭遇するであろう質問に対する答えはここでは見つけることができませんし、見つからないかもしれません。スタックオーバーフローで。問題を学び解決する方法は、他の人のコードを見ることです。Apple のオープンソース コードは宝物です。

    私が言ったことは深刻なことかもしれません。あるいは、クロスプラットフォームやカスタム プロトコルを実装する必要があり、穴を埋めるのに十分な時間がない限り、あなたが望む機能は私が思っているほど複雑ではないかもしれません。次に、POSIX を試します。そうでない場合は、高度な API またはサードパーティのライブラリを選択します。

    フレンドリーなリマインダー: 命を大切にしましょう。

    返事
    0
  • PHP中文网

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

    書き込みが -1 を返した後、errno を使用してエラー コードを取得してください

    返事
    0
  • キャンセル返事