問題タブ [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.
ios - NSOutputStream の write:MaxLength を入れ替えることができません:
NSOutputStream の実際の書き込みが発生する前に、カスタム データを書き込む必要があります。
スウィズリング コードを実行するために、以下を含むカテゴリ NSOutputStream(SwizzleWrite) を作成しました。
次に、Inout & Output ストリームを作成します: CFStreamCreatePairWithSocketToCFHost(kCFAllocatorDefault, hostRef, 80, &readStream, &writeStream);
しかし今、コントロールが handleEvent: delegate に到達すると、具体的には[outputStream write:rawstring maxLength:sizeof(rawstring)];に達します。、私はswizzledWrite:maxLengthでそれを取得しません:
ここで何が間違っていますか?
PS: Apple のスウィズリング メソッドは Appstore に適していないことを読みましたが、それらが受け入れられているケースも読みました。
ios - NSRunLoop でストリームをスケジュールする
私はこのチュートリアルhttp://www.raywenderlich.com/3932/networking-tutorial-for-ios-how-to-create-a-socket-based-iphone-app-and-serverに従っていますが、すべてが機能していますわかりました、しかし、私が理解できないテキストに1行あります:
私たちのストリームは、継続的にデータを送受信する準備ができている必要があります。これを有効にするには、実行ループでイベントを受信するようにストリームをスケジュールする必要があります。実行ループを割り当てない場合、デリゲートはストリームに読み書きするデータがなくなるまでコードの実行をブロックしますが、これは避けたいケースです。
しかし、コードの行にコメントを付けると、次のようになります。
すべてがまだ正常に機能します。これをメインの実行ループでスケジュールする必要がある理由がよくわかりません。
私が見るように、メイン スレッドで発生するすべてのことは、この実行ループで処理されます。ボタンを押すと、メインの実行ループで処理されます。ここで、メインの実行ループでこれをスケジュールしない場合、バイトはまだ送受信されているため、メインの実行ループで処理されることを意味します。
ios - ftp ダウンロードを強制的にキャンセルできない
SimpleFTPSampleを使用して、FTP サーバーからダウンロードおよびアップロードしています。完了に関係なく、特定の時間後にダウンロードをキャンセルして、アップロードを開始する必要があります。しかし、ダウンロードをキャンセルしてからアップロードを開始すると、デリゲート メソッドstream:handleEvent:
が呼び出されません。ダウンロードの完了後にアップロードが開始されると、デリゲート メソッドが呼び出されます。
その理由が理解できません。両方のタスクに個別の接続を作成しています。
ネットワーク ストリームで動作するように runloop をスケジュールする必要があり、ダウンロードを強制的にキャンセルすると runloop が終了しないため、これが理由ですか?
特定の時間後にアップロードを開始できるように、両方の操作を別々のスレッドで開始する必要がありますか?
ios - NSOutputStream を使用してバイト配列を送信する
8 バイト配列を IP に送信する必要があります NSMutableArray としてデータを持っています 0 から 255 までの整数値が含まれています そして、私が知る限り、それを送信する前に nsdata に変換する必要があります。
私はこの方法を使用していますが、8バイトを超えるNSdataオブジェクトが得られます
どんな助けでも大歓迎です
android - iOS ソケット出力ストリーム バイト数
これらのコードをウェブサイトで見つけて、現在のコードに書き直したところ、サーバー側に正常に接続できましたが、まだいくつかの問題がありました。
出力ストリーム:
ウェブサイトのコードによると、通常は文字列を送信できます
しかし、バイトを送信したい(例:0x80、0x10、0x20 ...など)Androidの構文は次のとおりです。
しかし、iosを交換しましたが、どうすればよいかわかりませんか?アドバイスやウェブサイトを教えてください。
sockets - 迅速にNSInputStreamから明示的にデータを読み取る方法は?
アプリケーションでソケット接続を使用しています。
これが私のSocketConnection.swift
私のViewController.swift
では、このようにサーバーに接続しています
NSStreamEvent.HasBytesAvailable
これで、ソケット経由で URL 文字列を送信できますが、明示的に読み取っているときに、サーバーの応答を出力するケースから同じ読み取り関数を呼び出すと、サーバーからデータを取得できません..しかし、どうすればイベントキューをトリガーできますか?
これを明示的に呼び出したいsocketConnection.read()
..どうすればいいですか?
接続の 2 秒後、接続チャネルが閉じられます。閉じるまで接続を維持したいと思います。
この問題から私を助けてください。
ありがとう