問題タブ [cocoaasyncsocket]
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.
objective-c - iOS アプリで EXC_ARITHMETIC エラーが発生するのはなぜですか?
アプリがクラッシュし、EXC_ARITHMETIC エラーが発生します。理由がわかりません。エラーが発生している場所は次のとおりです。
アプリのボタンをクリックするとエラーが発生し、次のように ViewController.m ファイルに接続されます。
同じファイルからこのコードを呼び出します:
btnPressed はアプリの読み込み時にも呼び出され、エラーは発生しません。同様に、[self btnPressed];
行にブレークポイントを追加すると、アプリのボタンをクリックすると機能し、ブレークポイントで停止し、[プログラムの実行を続行] をクリックすると、エラーも発生せずに機能します。
注: Cocoa アプリとの通信に CocoaAsyncSocket を使用しています。
javascript - PhoneGap と iOS を使用して、(コールバックではなく) ネイティブ コードから JavaScript 関数を呼び出すことはできますか?
アプリで PhoneGap を使用できるようになることを望んでいます。Javascript からネイティブ メソッドを呼び出せるように、カスタム プロトコル/プラグインを作成する必要があります。ネイティブ コードが返されたときに、Javascript で成功関数を呼び出すことができることはわかっています。
私ができる必要があるのは、ネイティブ コードから JavaScript 関数を呼び出すことです。基本的に、アプリはローカル ネットワーク経由で OSX コンパニオン アプリに接続し、OSX アプリが iOS アプリにデータを送信するときに、それが Objective C メソッドで処理されるときに、結果を PhoneGap/javascript に送信して何かを実行できるようにする必要があります。 WebView でそれを使用します。
これは可能ですか?javascript からネイティブを呼び出すことに関する情報しか見つけることができませんでした。
ありがとう、トーマス
以下の Answer のコードを使用します。
MyPhoneGapPlugin.m
「不明なレシーバー「theWebView」というエラーが表示されるのは、「UIWebView」のことですか?
更新: 答えが見つかりました: phonegap ヘルパーを使用すると、次のようなものを書くことができます...
iphone - バックグラウンドになった後、CocoaAsyncSocket が機能しない
iPadでサーバーとして使用しているAsyncSocketのインスタンスと、クライアントとして機能している別のiPadで実行されているAsyncSocketソケットがあります。クライアントとサーバーの間でデータを交換するために必要なすべてのコードがあります。問題はありません。
私が経験している問題は、すべて正常に動作することですが、アプリのバグ テスト中に、特に奇妙な (そして苛立たしい問題) に気付きました。
サーバーの iPad をオフにすると (その時点でソケットのデリゲートはサーバー上で起動されません)、クライアントは切断されます (そして、継続的に再試行するループに入ります)。厄介なのは、サーバーが復旧しても、クライアントがまだサーバーに接続できないことです。実際、クライアントを最初から再起動しても、サーバーに接続できません。クライアントが再び接続できるようにするには、サーバー アプリを再起動する必要があります。
奇妙なことに、このバグは、サーバーが実際に上部のボタンから「オフ」(つまり、スタンバイ状態) に切り替えられた場合にのみトリガーされます。ホームボタンを使用してアプリをバックグラウンドに送信するだけの場合、クライアントはサーバーへの接続を維持します。クライアントが切断デリゲートメッセージを受信して切断し、再接続を拒否するのは、デバイスが切断されたときだけです。一方、サーバーはこれを完全に認識しておらず、デリゲート メソッドはまったく起動されません。
私の質問を一般化するには:
- iPad の上部にあるボタンを使用してデバイスをスタンバイ状態にすると、AsyncSocket サーバー インスタンスは正確にどうなりますか?
- デリゲート メソッドが起動されないのに、接続されているクライアントが切断されるのはなぜですか?
- デバイスの電源を再び入れるとどうなりますか?
- クライアントが再接続できないのはなぜですか?
runloop - GCDAsyncSocket内のdidReadDataを現在のRunLoop内で実行するにはどうすればよいですか?
私はGCDAsyncSocketで動作する簡単な例を取得しようとしていますが、理解が不足していることを発見しました。すばらしい人々がこれを説明するのを手伝ってくれることを願っています。
以下にGCDAsyncSocketを設定しました。
そして、私のソケットテストサーバーアプリが文字列を受信するのを見ることができます
「テスト中...123... \ r \n」
しかし、ソケットテストサーバーに文字列を返送させると、didReadDataデリゲートが実行されることを素朴に期待していました
それでも、冷酷な現実は私が電話するまで私にそれを学ばせました
... didReadDataデリゲートは呼び出されません。
OK、それは大丈夫です。わかった。
ドキュメントをもう少し読むと、それは明確に次のように述べています
AsyncSocketは、RunLoopベースのTCPソケットライブラリです。
だから今、私はこのRunLoopのものを見ています。これは、私の見解では、MicrosoftWindowsのメッセージループのようなものです。iOSはイベント/メッセージ駆動型アーキテクチャ(Win32と同様)であるため、現在使用しているデフォルトのメインスレッドには、イベントを処理するための独自のmsgループがあります。
私の混乱は、iOS RunLoopが、GCDAsyncSocketを正しく機能させるために連携しなければならない別のエンティティのように見えることです。
実行ループモードのデフォルトセットがNSDefaultRunLoopModeであると述べている場合、これはメインスレッドにあります。
まだ混乱していますか?
したがって、Win32では、通信イベント処理コードは次のようになります。
もちろん、それは独自のスレッドにあります(GCDAsyncSocketを使用してまだそこに到達していません)が、それはある意味で独自の「RunLoop」になります。
[asyncSocket readDataWithTimeout]呼び出しでキューを埋めるポーリングループでスタックしないように、GCDAsyncSocketを使用して同じことを行うにはどうすればよいですか?
このライブラリを使用するには、より良い例が必要だと思います。
iphone - AsyncSocket TLS HOWTO
私は AsyncSocket を初めて使用し、ポート 5222 (xmpp) で Facebook チャット サーバー (chat.facebook.com) に接続しようと必死に試みていますが、非常にうまく機能します。Facebookがセキュアソケットに切り替える前は、正常に機能していました。
サーバーは start-tls を指示するので、[socket startTLS:nil] を呼び出しますが、何もしません。その後ソケットに書き込もうとしても、何も起こりません。サーバーが応答を停止します。何が間違っているのかわかりません。
AsyncSocket の経験がある人なら誰でもサーバーに接続して、何が間違っているのか教えてもらえますか?
ご協力いただきありがとうございます
macos - Cocoaソケットで整形式のHTTPレスポンスを送信するには?
組み込みの HTTP サーバーを含むアプリを作成しています。ソケット経由で PNG 画像を送信する必要がありますが、どういうわけか混乱して画像が表示されません。これは私のコードです (私は AsyncSockets を使用しています):
私が間違っていることは何ですか?問題は応答の形式が正しくないことだと思いますが、わかりません、ありがとう:)
objective-c - CocoaAsyncSocket をフラッシュするには?
内部バッファ/キューなどをフラッシュする方法はありますか? CocoaAsyncSocket (GCDasyncSocket) の?
[... readDataWithTimeout ..]メソッドを呼び出すときに、バッファリングされてどこかに座っていた可能性のある以前の接続から残ったゴミデータを読み取らないようにする環境をセットアップしたいと考えています。
または、データのストリームを無視して最初からやり直したい場合もあります。そのため、クリーンなパイプを確保したいと考えています。
iphone - AsyncSocket フレームワークで、iPhone で複数のソケット接続を行う方法は?
現在、iPhone ソケット接続の開発に AsyncSocket を使用しています。 http://code.google.com/p/cocoaasyncsocket/
しかし、サーバーからデータを収集するために2つのマルチサーバーを接続する方法は?
ホスト IP アドレス A: 201.22.33.XXX.XX とホスト IP アドレス B: 202.33.XXX.XX があります。
1 台のサーバーに正常に接続してデータを収集できます。しかし、両方のサーバーを同時に収集する方法は?
ステップ 1 ---- A に接続 ステップ 2 ----
B に接続 ステップ 3 ---- B を切断 しかし、この時点で切断するとB、Aも断線…。
助けてください。
iphone - GCDAsynSocketDelegatedidReadDataメソッドは呼び出されません。GCDAsynSocketの使用
GCDAsyncSocketを使用してメッセージを送受信しようとしていますが、機能しません。
接続を確立してメッセージを書き込んでいますが、読み取りに関しては、代理人が呼び出されることはありません。
私はiOS5とこのセットアップを使用しています:
クライアント:
デリゲートdidReadDataメソッドは呼び出されません
サーバ
クライアントにメッセージを書き込み、ソケット接続が成功すると応答を待ちます
そして、これは今までに呼ばれていません...
iphone - IOS アプリのサーバーに対して永続的なソケットを開いたままにするためのベスト プラクティス
私のアプリでは、リアルタイムの更新のためにサーバーとのオープン接続が必要です。多数のビューをナビゲートできるようにする必要があり、その間にデータを非同期で送受信できます。目標は、アプリがリアルタイムで自動的にデータを更新するようにすることです。
私がやりたいのは、CocoaAsyncSocket のデリゲート関数といくつかのヘルパー関数を持つ NSObject から継承する別のソケット マネージャー クラスを用意し、永続ソケットで何かが発生すると、クラス内で処理され、通知を送信することです。現在表示しているビューによって異なる効果があります。
これを行うための好ましい方法は何ですか? このソケット マネージャーのプロトコルを設定し、すべての UI ビューをデリゲート* にしますか? それとも、ソケットマネージャーをバックグラウンドスレッドに置いて通知を送信する方がよいでしょうか? バッテリー寿命に関して好ましい選択肢はありますか?
*多かれ少なかれhttp://www.raywenderlich.com/3932/how-to-create-a-socket-based-iphone-app-and-serverのように