問題タブ [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.
ios - UDP サーバー メッセージから文字列を取得する
Swift ベースの iOS アプリでCocoaAsyncSocketライブラリを使用しています。ネットワーク上の UDP サーバーへの非同期 UDP ソケットを作成しましたが、応答が返されます。
この返信を次のように読んでいます。
結果は次のとおりです。
ご覧のとおり、奇妙なキャラクターの集まりです。
生データは<100277fe c0a80172 00000000 00000000>
(書き込みによるprintln(data)
)です。ここでは、最初の 4 バイトがwþÀ¨r
一部のようで、次の 4 バイトは IP アドレスで、関数から既に取得していgetHost()
ます。
UDP サーバーが受信した実際のデータを抽出するためのヘルパー関数が見つからないようです。UDP 応答の ASCII 表現が「hello」であることはわかっています。しかし、これを別のものに変更すると、Xcode のデバッグ部分に表示されるデータには反映されません。いつも ですwþÀ¨r
。
NSASCIIStringEncoding
との両方を試しましNSUTF8StringEncoding
たが、後者ではEXC_BAD_ACCESS
実行時例外が発生します。
私が見つけることができる限り、これは人々がObjective-Cで通常行う方法です(didReceiveData
関数内):
文字列表現としての UDP 応答で「hello」メッセージを見つけるにはどうすればよいですか?
cocoaasyncsocket - CocoaAsyncSocket の GCDAsyncSocket を使用した未終了データの読み取り
リッスンしている TCP ソケットを開き、ソケットに書き込まれたすべてのバイトを読み取り、それらのバイトで何かを行うアプリを作成しようとしています。サーバーは、ソケットに書き込まれるデータの長さを知りません。また、送信されるデータには終了文字がありません。私がやりたいことは、利用可能なすべてのバイトを読み取り、少し遅らせて、より多くのバイトを読み取ろうとすることです。これを行う簡単な方法はありますか? タイムアウトまたは1秒で100バイトを読み取るようなことをしたいのですが、読み取りがタイムアウトした場合は、利用可能なすべてのデータを取得してから、再度読み取りを開始します。
ios - Swift: GCDAsyncUdpSocket で UDP を受信する
バックグラウンド:
iOS アプリとサーバーの間で UDP パケットを送受信できるようにしたいと考えています。サーバーは、すべての受信メッセージをクライアント アプリにエコー バックします。サーバーはテストされ、動作することが確認されています。GCDAsyncUdpSocketDelegate を実装する 2 つのクラス (1 つは送信用、もう 1 つは受信用) を起動する StartViewController があります。「送信ソケット」が機能し、サーバーがメッセージを受信します。
問題:
アプリは、送信された後に受信メッセージを取得することはありません。didReceiveData が呼び出されないため、リスニング ソケットの設定に何か問題がある可能性があります。
私はこれを完全に間違っていましたか?
始める:
受け取る:
送信:
編集: 忘れていたコード行を追加しました。
ios - Swift で CocoaAsyncSocket を使用して SSDP 応答を受信する
ライブラリCocoaAsyncSocket(https://github.com/robbiehanson/CocoaAsyncSocket)でswiftを使用してSSDP応答を受信しようとしています
M-Search コマンドをマルチキャストグループに正常に送信して応答を得ることができます。 out と応答が戻ってきますが、アプリケーションで NSData を受信することはありません。(ちなみに、今はRokuだけを探しています)
GCDAsyncUdpSocketDelegate Delegate を実装し、didReceiveData 関数を追加しましたが、データを取得できません。
このセクションに何か問題があると思われます。
以下のサンプルコードを参照してください。
ios - iOS プロトコル GCDAsyncSocket
CocoaAsyncSocket/GCDAsyncSocket が使用されている tcp 経由で netty サーバーに protobuf メッセージを送信する必要がある小さなアプリを作成しています。
これを行うには、次のコードを使用します。
ただし、コードは writeToCodedOutputStream で常に「領域不足」エラーを受け取りました。詳細なトレース情報は、writeToCodedOutputStream/writeEnum/writeTag/writeRawVariant32/writeRawByte/flush です。
何か助けはありますか?ありがとう!
tcp - AsyncSocket: 常に着信 TCP メッセージをリッスンします
TCP経由でサーバーに接続し、受信データを継続的にリッスンするサービスが必要です。次の方法で使用している CocoaAsyncSocket を使用しています。
次に、読み取りデリゲート メソッドで:
readDataWithTimout:tag:
すぐにもう一度電話するというのは正しいですか?または、着信メッセージを常に聞く (より良い) 方法はありますか?
ios7 - iOS7.x デバイスの電源ボタンをトリガーすると CocoaAsyncSocket 接続が切断される
アプリケーションで AsyncSocket (GCDAsyncSocket ではない) を使用しています。1つを除いて、すべてのケースで非常にうまく機能します。つまり、デバイスの電源ボタンを押すと、接続が切断されます。これは iOS 7.x デバイスでのみ発生しますが、iOS 8.x デバイスでは正常に実行されます。plist で VOIP を有効にし、以下のように onSocket:didConnectToHost:port のソケット デリゲート メソッドにそれぞれのコードを追加しました。
何か案は?
ios - GCDAsyncUDPSocket: IPv6 を介した UDP マルチキャストが機能しない
IPv6 を介した UDP マルチキャストが機能しません。これを行おうとしているプラットフォームは iOS (Swift を使用) です。私は持っていて、次のGCDAsyncUdpSocket
ように構成します:
その後、いくつかのデータをマルチキャスト アドレスに送信しようとします。
その時点で、GCDAsyncUDPSocket コードをステップ実行するとsendto
、メソッド内で が呼び出されますdoSend
(3919 行目)。この呼び出しは -1 を返し、エラーは「ホストへのルートがありません」です。これをiOSシミュレーターで実行しています。利用可能なすべてのネットワーク インターフェイスを列挙すると、次のようになります。
どんな助けでも大歓迎です!