問題タブ [nsinputstream]

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 投票する
2 に答える
6746 参照

ios - バイトを Swift 文字列に読み込む

次のデータを含むバイナリ ファイル test.data があります。

最初のバイトは、たとえばシーケンス番号 01 です。次の 6 バイトは、2 つの UTF8 漢字「测试」です。次に、8 番目のバイトは、別のシーケンス番号 02 です。

私が知っているように、UTF8 は可変長 (1 ~ 4 バイト) です。この投稿を参照してください。

次のコードを使用して、Int32 と Byte(UInt8) を読み取ります。

ストリームから文字列を読み取るメソッドを書きたいと思います。これが私が考えていることです:

  • バイトの読み取り (読み取るバイト数がわかっていると仮定)
  • バイトを文字に変換します
  • 文字を文字列に追加する

しかし、問題は、UTF8 の長さが可変であるため、Character に対して読み取るバイト数です。一般的に、私の質問は、UTF8 文字列をどのように読み取るべきかということです。前もって感謝します。

0 投票する
3 に答える
956 参照

ios - Objective-C メソッドを NSInputStream 用の Swift に変換する (バイトを double に変換する)

Objective-C に次のコードがあります。

できます。しかし、それをSwiftに変換する方法がわかりません。これが私のコードです:

エラーメッセージは次のとおりです。

タイプ「($T4, maxLength: IntegerLiteralConvertible)」の引数リストで「&」を呼び出すことはできません

誰でも助けることができますか?ありがとう

私が使用しているテストデータ(1.25):

アップデート:

シンプルなcソリューションですが、Swiftでこれを行うにはどうすればよいですか?

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

objective-c - EXC_BAD_ACCESS と NSStreamEventHasBytesAvailable

これは非常に紛らわしいエラーです。同じデータを送受信しても、発生する場合と発生しない場合があるためです。

NSInputStream を介してストリームを受信して​​います。標準コードを使用して、そのストリームで受信したバイトを読み取り、次のように別のメソッドに渡します。

ストリームの受信が開始されるEXC_BAD_ACCESS (code = 1, address = 0x8)と、行のエラーが発生することがあります

aStream が nil と等しくなることはなく、内部の内容を読み取る前に割り当てが解除されることはないため、この問題の原因がわかりません。読んだことは私の理解です: maxLength は NSInteger を返し、これは長さで格納されます。私が考えることができる唯一の問題は、ストリーム内のデータに関するものですが、このデータを読み取らない限り、このデータをテストする方法がなく、悪循環につながります。

何かご意見は?

編集

これは完全なスタック トレースです。

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

ios - NSRunLoop でストリームをスケジュールする

私はこのチュートリアルhttp://www.raywenderlich.com/3932/networking-tutorial-for-ios-how-to-create-a-socket-based-iphone-app-and-serverに従っていますが、すべてが機能していますわかりました、しかし、私が理解できないテキストに1行あります:

私たちのストリームは、継続的にデータを送受信する準備ができている必要があります。これを有効にするには、実行ループでイベントを受信するようにストリームをスケジュールする必要があります。実行ループを割り当てない場合、デリゲートはストリームに読み書きするデータがなくなるまでコードの実行をブロックしますが、これは避けたいケースです。

しかし、コードの行にコメントを付けると、次のようになります。

すべてがまだ正常に機能します。これをメインの実行ループでスケジュールする必要がある理由がよくわかりません。

私が見るように、メイン スレッドで発生するすべてのことは、この実行ループで処理されます。ボタンを押すと、メインの実行ループで処理されます。ここで、メインの実行ループでこれをスケジュールしない場合、バイトはまだ送受信されているため、メインの実行ループで処理されることを意味します。

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

ios - NSInputStream を使用して iOS クライアントで Java サーバーから最初のメッセージを受信した後、それ以上のメッセージを取得できない

私はJavaサーバーを持っています(そしてそれは私のiOSクライアントからのリクエストを正しく読むことができます - レスポンスを生成し、正しく送信しているように見えます.最初のメッセージを受信):

コミュニケーションの順序

ほとんどの場合、複数呼び出すことはありませんが、MessagePacket2 または MessagePacket4 データを呼び出して取得することがあります。

サーバーが 4 つのパケットを送信するため、サーバーから 4 つのパケットではなく最初のパケットのみを受信する理由がわかりません。

以下のチュートリアルのコードを使用しました - > http://www.raywenderlich.com/3932/networking-tutorial-for-ios-how-to-create-a-socket-based-iphone-app-and-server#コメント

私のコードはここにあります->

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

ios - NSStream デリゲート メソッド stream:handleEvent: EXC_BAD_ACCESS code=1 でアプリケーションをクラッシュさせる

次の方法でメディアファイルをサーバーにアップロードするために NSInputStream を使用しています。

そして NSStream デリゲート メソッド stream:handleEvent: では、メディア ファイルのチャンクをフェッチしてサーバーにアップロードしています。

}

これまでのところ、シミュレーターではすべてがうまく機能しています。問題は、この同じコードを実際のデバイス (今のところ iPad-mini)でテストすると、デリゲート メソッド stream:handleEvent: の開始時に常に EXC_BAD_ACCESS code=1 でアプリケーションがクラッシュすることです。

誰でもこれについて何か考えがありますか?どんな助けでも大歓迎です。

ありがとう、ジェイ・ステピン。

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

ios - ftp ダウンロードを強制的にキャンセルできない

SimpleFTPSampleを使用して、FTP サーバーからダウンロードおよびアップロードしています。完了に関係なく、特定の時間後にダウンロードをキャンセルして、アップロードを開始する必要があります。しかし、ダウンロードをキャンセルしてからアップロードを開始すると、デリゲート メソッドstream:handleEvent:が呼び出されません。ダウンロードの完了後にアップロードが開始されると、デリゲート メソッドが呼び出されます。

その理由が理解できません。両方のタスクに個別の接続を作成しています。

ネットワーク ストリームで動作するように runloop をスケジュールする必要があり、ダウンロードを強制的にキャンセルすると runloop が終了しないため、これが理由ですか?

特定の時間後にアップロードを開始できるように、両方の操作を別々のスレッドで開始する必要がありますか?