問題タブ [nsoutputstream]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
409 参照

ios - iOS: アプリがバックグラウンドから戻った後、EAOutputStream へのアクセス中に SIGPIPE が発生する

ExternalAccessory ライブラリを介して Bluetooth 2.1 センサー デバイスと対話する iPhone アプリ (iOS 7.0) があります。アプリが通常の方法 (ロック、ホーム ボタン、自動スリープなど) のいずれかによってバックグラウンド化された場合、デバイスとの通信に使用するアプリNSOutputStreamで見つかったへの書き込みを再開しようとすると、SIGPIPE を取得します。また、書き込みエラーが発生したというEASession内部エラーも発生します。EAOutputStream

その時点から、出力ストリームに書き込むことができなくなり、常にステータス 5 (End of Stream Reached) で返さNOれます。hasSpaceAvailable

潜在的な関心: が示してEAAccessoryいるのは示されていますが、示されているものは示されています。それらは同一の特性を持っています。この状況の間、センサー デバイスのリンク ライトは点灯したままで、[設定] > [Bluetooth] 画面にアクセスすると、デバイスが「接続済み」と表示されます。アプリを強制終了して再起動することが、通信を再開する唯一の方法です。EASessionconnected: NO[[EAAcessoryManager sharedAccessoryManager] connectedAccessories]connected: YESconnectionId

これを適切に処理する方法を知っている人はいますか? アプリがバックグラウンドに入る前に「閉じる」コマンドをストリームに送信し、戻ってきたら再び「開く」必要がありますか?

0 投票する
1 に答える
3598 参照

ios - メモリ内の NSOutputStream から NSData を取得しますか?

NSOutputStream を使用してデータを蓄積し、終了したら、その内容で NSData オブジェクトを作成します。次のように、出力ストリームがファイルに基づいている場合に実行できます。

一時ファイルを作成せずに「contents」変数を埋めたい。これをすべてメモリ内で実行できますか?NSOutputStream のドキュメントには、そのための API がありません。

0 投票する
0 に答える
143 参照

objective-c - NSStream stops receiving events to handle

I've created a small uploader. It basically connects to an FTP server and upload files from my local folder. It's working now but my problem is, sometimes my NSStream (output/input) stops responding. In the beginning, you would receive events like the stream opened, has space available and what not. However, there are times when it would suddenly stop receiving stream events. It's just stuck there waiting for an event to be called. Does anyone know what could possibly be doing it? Is it connection issues? Is there a way I could do to avoid it? Thanks.

0 投票する
2 に答える
78 参照

ios - 迅速なコンバージョン

この質問は、以前に別の形で尋ねられたにちがいないことを私は知っています。NSOutputStream私は自分の見解からさまざまなものから作成しているメッセージに書き込もうとしています。

複数の文字列を連結して応答しようとすると、エラーが発生します。私が得ているエラーはUInt8self.messageText.text.

応答変数を追加しようとすると、同じことが起こります

0 投票する
1 に答える
377 参照

tcp - TCP経由でJPEG NSDataをPythonサーバーに送信する

iOS クライアントを持つ Python tcp サーバーがあります。データを送受信できますが、私が抱えている唯一の問題はエンコードに関する可能性があります。TCP 経由で JPEG を Python サーバーに送信し、データをサーバー上の JPEG に書き込もうとしています。jpeg が破損し続けます。

クライアント Obj-C コード:

そして、ここにpython(ねじれた)サーバーコードがあります:

0 投票する
0 に答える
569 参照

ios - iOS 入力ストリームは、出力ストリームが同時に送信している場合にのみ高速データを受信します

私の iOS アプリにはソケット通信が必要です。入力ストリームと出力ストリームの設定については、このRay Wenderlich チュートリアルに従っています。私が使用しているサーバーは Twisted です。私のアプリでは、ジャイロスコープ データなどの外部イベントによって生成されたデータの高速バーストを送受信する必要があります。JSON文字列の形式でデータを送受信しています。大部分は、リアルタイム メッセージング チャット アプリに非常によく似ていますが、送受信は非常に高速でバーストです。

したがって、私のアプリのレイアウトは、1 つのビュー コントローラーDViewContorllerと、3 つの tableviewcontrollers を持つ tabbarcontroller があることです。これら 4 つのビュー コントローラーすべてでデータを送受信する必要があるため、App Delegate でソケット ストリームの初期化を実装しました。3 つのタブすべてについて、私の App Delegate は を設定します[self.inputstream setDelegate:self]が、それが にある場合はDViewController、入力ストリームのデリゲートを の参照に設定しますDViewController(void)viewWillDisappearofではDViewController、入力ストリーム デリゲートを AppDelegate の参照にリセットして、入力ストリームの制御を取り戻すようにしました。出力ストリームの場合、デリゲートは常に AppDelegate に設定され、変更されることはありません。

myAppDelegateDViewControllerare<NSStreamDelegate>の両方が実装されています。

すべてのストリーム イベント ケースが実装されています。

したがって、基本的に、セットアップ全体がうまく機能しますが、データが高速でない場合に限ります (または、正確な問題を特定できないようです)。

したがって、テスト中に行ったいくつかの観察結果を次に示します (Simulator-iPhone および iPhone-iPhone セットアップを使用)。

A. シミュレーター - iPhone:

  1. このセットアップでは、シミュレーターから iPhone に送信したい方法とまったく同じ方法でデータを高速に送信できますが、iPhone からシミュレーターには送信できません。iPhone はすべての文字列を適切に受け取り、必要に応じて機能します。

  2. iPhone からシミュレーターに送信すると、シミュレーターは一度に 1 つの JSON 文字列しかデータを読み取ることができず、データが高速に送信されると機能しません。高速で送信すると、シミュレーターが受信するすべての文字列が半分になります (半分だけが受信されます)。注: サーバーは完全な文字列を送受信します。すべての文字列が高速であっても、サーバーに問題はありません。

  3. シミュレーターと iPhone の両方から同時にデータを送信すると、たとえ高速であっても、両方がすべての文字列を適切に受信して処理します。

B. iPhone - iPhone:

  1. いずれかの iPhone (両方ではなくいずれかが送信) は、一度に 1 つの JSON 文字列しかデータを受信できず、データが高速に送信されると両方とも機能しません。高速で送信された場合、いずれかの iPhone で受信される文字列はすべて半分になります (半分だけが受信されます)。注: サーバーは完全な文字列を送受信します。すべての文字列が高速であっても、サーバーに問題はありません。

  2. 両方のiPhoneから同時に同時にデータを送信すると、たとえ高速であっても、両方がすべての文字列を適切に受信して処理します。

これらの観察から、iPhone がすべての高速文字列を受信して​​いるのは、同時にサーバーに何かを送信している場合のみであると私は確信しました。または、シミュレーターが iPhone に送信すると、iPhone は何があってもすべてを受信できるため、完全に間違っている可能性があります。シミュレーターから受け取った文字列がiPhoneによって完全に取り込まれているが、その逆ではないという、シミュレーターの動作の違いを知りたいです。iPhone の送信がシミュレーターよりも速すぎるため、送信されたすべての文字列が受信側に登録されないのでしょうか? 誰か私がこれを解読するのを手伝ってください!

注: いずれの場合も、サーバーは完全に機能し、速度に関係なく、完全な長さのデータを送受信します。そして、私はiOS 7を使用しています。

更新 1:わかりました。1 日 中実験して、ようやく動作するようになりました。問題は、まさに私の質問文です。入力ストリームから継続的かつ高速に受信したい場合、出力ストリームはアイドル状態を維持できません。どうしてこうなったのかわからないので、どなたか教えてください。したがって、私が使用しているクイックフィックスは、入力ストリームでバイトを取得するたびに、すぐに空のデータをサーバーに送信して、出力ストリームをアクティブに保つことです。したがって、入力ストリームは完全なデータを高速に読み取ることができます。しかし、それはサーバー リソースの浪費だと感じています。さらに、信頼できるソリューションではありません。具体的な解決策を探しています。出力ストリームの使用率を気にせずにシミュレーターがそれを行う方法を知りたいです。誰でも助けてもらえますか?

更新 2:以前の更新から学ぶと、空のデータをサーバーに送信することではありませんが、送信者から次の文字列を完全に受信したい場合は、送信者 にダミー データを送信する必要があります。データをすばやく完全に終了/受信したい場合は、ダミー/ブランク データでエンド ツー エンド通信を維持する必要があります。誰もがこの問題を抱えていて、それを行うためのより信頼できる/具体的な方法を見つけましたか?