問題タブ [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: ストリームが不完全な場合、既存のファイルを削除しますか?
ファイルを書き込むために NSUrlConnection と NSOutputStream を使用しています。しかし、ファイルが存在しないか、ダウンロード中にエラーが発生した場合、不完全なダウンロード ファイルを削除できるようにしたいと考えています。
これに対する操作はありますか?そうしないと、内容が 0 バイトのファイルを取得するため...
ios - NSInputStreamのNSStreamEventHasBytesAvailableが呼び出されることはありません
WiTapに似たアプリを作成しています(ただし、多くのデバイスを接続するため)。問題は次のとおりです。アプリケーションがデバイスを接続しているようです(テーブルビューコントローラーに表示されます。の代理人はNSInput/OutputStream
、両方のストリームが開いていると言いますが、パケットを送信するとでNSOutputStream
反対側のデバイスの関数よりも呼び出されNSInputStream
ません。(NSStreamEventHasBytesAvailible
- (void)stream:(NSStream *)aStream handleEvent:(NSStreamEvent)eventCode)
これが接続と送受信を行っているコードです...
Instruments(ネットワークのもの)を使用してプロジェクトをデバッグしようとしました。パケットは送受信されますが、イベントは発生しません。ご協力ありがとうございました。誰かが望むなら、私はプロジェクト全体を送るのに問題はありません...
objective-c - NSOutputStreamを使用したiOSのFTPS
SSLを介してFTPでファイルをアップロードしようとしています。私のコードは通常の接続で動作しますが、SSLで使用すると、次のメソッドでエラーがスローされます。エラーはNSStreamEventErrorOccurredです。
私はこのウェブサイトのiphone-ftps-clientでsoultionをチェックしていました。しかし、答えは、FTPSはiOSに組み込まれたサポートではなく[独自のライブラリを作成する必要があります]、他のポイントはFTPのみです。
FTPサーバー[.crt]に証明書がありますが、これは初心者なので、clientSide[iOS]でのこの証明書の使用法を理解できません。
誰かがFTPSで私を助けてくれませんか、大きな助けになるでしょう。
objective-c - NSOutputStream は、2 番目の NSOperation が書き込みを試みた後、使用可能なスペースを常に待機しています。
を作成し、それを から呼び出す にNSOutputStream
渡します。操作では、ソケットに書き出せるようにポーリングしています。これは、ソケットに初めて書き出すときに正常に機能します。ただし、操作が戻った後、ソケットに再度書き込もうとすると、出力ソケットでスペースが使用可能になるのを無限に待っているため、書き込みは行われません。書き込むたびに出力ストリームを開いたり閉じたりしようとしましたが、同じ問題があります。NSOperation
NSOperationQueue
hasSpaceAvailable
init 関数で出力ストリームを開きます (これNSOutputStream
は Bluetooth から作成されますEASession
:
また、init で操作キューを作成します。
出力ストリームを介して送信するデータを含むテキスト フィールドがあります。この関数は、送信ボタンをクリックするたびに呼び出されます。
これは私の操作コードがどのように見えるかです: ( SenderOperation.h
)
( SenderOperation.m
)
objective-c - サーバーからのすべてのデータが NSOutputstream に書き込まれるまで、ストリームにデータを書き込む方法
サーバーからのすべてのデータが NSOutputstream に書き込まれるまで、継続的にストリームにデータを書き込み、ストリームを解析する方法
また、解析を開始していますが、Stream:handleEvent がストリーム イベントに対して呼び出されていません。サーバーの応答データの合計がストリームによって取得されず、ストリームに書き込むデータがさらにある場合に、データをストリームに書き込む方法.Howこのケースを処理します。
ios - NSInputStream と NSOutputStream の問題
ネットワーク経由で相互に接続されているデバイス間で2 つがNSInputStream
あります。NSOutputStream
に何かを書き込むと、イベントが発生するoutput stream
までデータが書き込まれ ます。NSStreamEventEndEncountered
出力ストリームを閉じますが、反対側 ( input stream
) ではNSStreamEventEndEncountered
、 のビュー コントローラーを終了するまで、イベントは発生しませんoutput stream
。1.で同じことが発生した後でも、 でイベントが発生
しないのはなぜですか? (このイベントでは、出力ストリームも閉じられます)
2. を一度開くと、データを書き込むことができるのは 1 回だけであると理解しています。イベント後に再度開くことはできません (たとえば、イベントに何か新しいものを書き込むため)。NSStreamEventEndEncountered
input stream
output stream
NSOutputStream
output stream
NSStreamEventEndEncountered
ios - NSInputStream/NSOutputStream を介して複数の画像を転送する
私は2つ持っておりNSInputStream
、NSOutputStream
ネットワーク経由で互いに接続しています。コア データ オブジェクトと関連するイメージをあるデバイスから別のデバイスに転送したいと考えています。JSON
コア データ オブジェクトをストリームの反対側に正常に変換して転送し、 JSON
. これで、記録されたそれぞれに関連付けられた画像があります。画像はディスク上にあり、コアデータオブジェクトに保存されているパスのみがあります。に書き込むときは、完全なデータを手元に用意する必要がありますoutput stream
。(をXML
含むJSON
) を用意しました。
1. しかし、どうすれば画像 ( ) を(また)NSData *
と一緒に転送できますか? 読み取り側 ( ) で XML と画像を区別するにはどうすればよいですか?XML
NSData *
NSInputStream
2. また、複数の画像を転送する必要がNSInputStream
あります。画像のバイトが終了し、次の画像のバイトが開始したことを最後にどのように伝えますか?
3. どの画像 (名前) が転送されたかをどのように知ることができますか?
ありがとう
objective-c - CFStreamCreateBoundPairは4kbのデータをストリームに書き込んでおり、ストリームはxmlの開始ノードを含み、終了ノードを含まないデータを解析します
CFStreamCreateBoundPairは4kbのデータをストリームに書き込んでおり、streamはxmlの開始ノードを含み、終了ノードを含まないデータを解析します。コードの記述方法とコードの管理方法により、正しいxmlデータをnsoutputstreamに書き込みます。
CFStreamCreateBoundPair(NULL、(CFReadStreamRef *)&iStream、(CFWriteStreamRef *)&oStream、4096);
ios - AFNetworking を使用した iOS の大きなファイルのダウンロードが停止する
AFNetworking を使用して大きなビデオ ファイルをダウンロードしていますが、タイムアウトを呼び出したり、他の種類のエラーをスローしたりすることなく、約 170MB で停止するようです。
AFURLConnectionOperation をサブクラス化してデータをストリーミングし、NSOutputStream を使用してデータを直接ファイルに書き込みます。
[urlConnection 開始];
ファイル自体は約 370MB です。誰にもアイデアはありますか?
前もって感謝します
ios - iOS:.jpg画像をbase64としてtcpサーバーに送信
これは私を殺すつもりです。この1つのばかげた問題を除いて、私はこれを成し遂げるのにとても近いです。そして、問題を適切に説明できるかどうかはわかりませんが、試してみます。
私のエンタープライズアプリは、iPhoneカメラを使用して、現場担当者が購入した領収書の写真を撮ります。jpegデータをbase64(https://github.com/nicklockwood/Base64)に変換するために本当にクールなAPIを使用して、TCP接続を介してVB 2010サーバーに送信しました。VB2010サーバーは、データをテキスト文字列として読み取り、に変換し直します。バイナリ。
base64ファイルが作成されると、さらに多くの画像が存在する可能性があるため、最初に電話のディスクに保存されます。次に、送信の準備ができると、プロセスは各base64ファイルを読み取り、一度に1つずつ送信します。
base64関数によって作成されたテキスト文字列は非常に大きく、最初は約131,000バイトしか送信していませんでした。これは、簡単にバイナリに変換し直しますが、画像の約1 / 4〜1/3をレンダリングします。アプリがそれ自体を先取りしようとしていたため、データが切り捨てられていることがわかりました。
そこで、NSStreamEventHasSpaceAvailableイベントを使用してbase64文字列をいくつかのチャンクに分割し、それらを順番に送信する方法を示すスニペットを見つけました。(http://www.ios-developer.net/iphone-ipad-programmer/development/tcpip/tcp-client)これは、完全なファイルを送信する限り、つまり、サーバーが受信した結果のファイルが正しいサイズ。送信前のbase64ファイルと同じです。
ここでの問題は、サーバーが受信したファイルが、ファイルの先頭から最初からやり直しているように見えるために破損していることです。つまり、データが繰り返され始めます。
奇妙な部分は、繰り返し部分が毎回受信ファイルのまったく同じ場所、つまり位置131016から始まることです。ファイルの最後で繰り返しを開始するのではなく、その時点でファイルを中断してジャンプして戻ります。最初に。そして、それがHasSpaceAvailableイベントの使用を開始する前に送信されたファイルのサイズであったことが起こります。131,016という値の意味がわかりません。どこかの最大バッファサイズ?
あらゆる種類のNSLogとブレークポイントを使用して、データがそのように電話を離れ、サーバーによってスクランブルされていないことをほぼ確認しました。また、base64ファイルを添付ファイルとして電子メールで送信するNSMailComposeViewerメソッドを記述しましたが、これは完全に実行されます。
ファイルがディスクから読み取られてサーバーに送信されるときのコードは次のとおりです。
そして、HasSpaceAvailableイベントを使用するコードは次のとおりです。
(ProgressViewコントロールを画面に配置できるため、このコードが特に気に入っています。)
ネットワークストリームイベントハンドラーコードはルートビューコントローラーにありますが、base64のイメージデータは別のビューコントローラーから送信されています。私の本能は、これまでは問題なく機能していたので、これは問題ではないが、文字列がはるかに短いことを教えてくれます。
さて、関連しているかもしれないもう一つの問題があります-そしておそらくそうです。アプリを閉じないとデータの転送が完了しないようです。接続が閉じられるまで、サーバーはそれを認識しません。コード内のさまざまな場所に[outputStreamclose]を配置してみましたが無駄になりました。また、改行またはキャリッジリターン、あるいはその両方を使用してbase64文字列を終了しようとしました。
サーバーは、正しいバイト数を確認したときにファイルを保存するようにプログラムされていますが、アプリが閉じられるまでそれは発生しません。サーバーでWireSharkを使用することで、一部のデータが受信されていることがわかりますが、残りのデータは、私が言ったように、アプリが閉じられるまで到着しません。
この最後の部分(転送の完了)が問題だと思いますが、私がどの検索用語を使用するかを知らない限り、これに対処するものをオンラインで見つけることはできません。これは可能性が高いです。
十分な情報を提供できたと思います。誰か助けてもらえますか?