問題タブ [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.

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

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」メッセージを見つけるにはどうすればよいですか?

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

cocoaasyncsocket - CocoaAsyncSocket の GCDAsyncSocket を使用した未終了データの読み取り

リッスンしている TCP ソケットを開き、ソケットに書き込まれたすべてのバイトを読み取り、それらのバイトで何かを行うアプリを作成しようとしています。サーバーは、ソケットに書き込まれるデータの長さを知りません。また、送信されるデータには終了文字がありません。私がやりたいことは、利用可能なすべてのバイトを読み取り、少し遅らせて、より多くのバイトを読み取ろうとすることです。これを行う簡単な方法はありますか? タイムアウトまたは1秒で100バイトを読み取るようなことをしたいのですが、読み取りがタイムアウトした場合は、利用可能なすべてのデータを取得してから、再度読み取りを開始します。

0 投票する
2 に答える
21915 参照

ios - Swift: GCDAsyncUdpSocket で UDP を受信する

バックグラウンド:

iOS アプリとサーバーの間で UDP パケットを送受信できるようにしたいと考えています。サーバーは、すべての受信メッセージをクライアント アプリにエコー バックします。サーバーはテストされ、動作することが確認されています。GCDAsyncUdpSocketDelegate を実装する 2 つのクラス (1 つは送信用、もう 1 つは受信用) を起動する StartViewController があります。「送信ソケット」が機能し、サーバーがメッセージを受信します。

問題:

アプリは、送信された後に受信メッセージを取得することはありません。didReceiveData が呼び出されないため、リスニング ソケットの設定に何か問題がある可能性があります。

私はこれを完全に間違っていましたか?

始める:

受け取る:

送信:

編集: 忘れていたコード行を追加しました。

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

ios - Swift で CocoaAsyncSocket を使用して SSDP 応答を受信する

ライブラリCocoaAsyncSocket(https://github.com/robbiehanson/CocoaAsyncSocket)でswiftを使用してSSDP応答を受信しようとしています

M-Search コマンドをマルチキャストグループに正常に送信して応答を得ることができます。 out と応答が戻ってきますが、アプリケーションで NSData を受信することはありません。(ちなみに、今はRokuだけを探しています)

GCDAsyncUdpSocketDelegate Delegate を実装し、didReceiveData 関数を追加しましたが、データを取得できません。

このセクションに何か問題があると思われます。

以下のサンプルコードを参照してください。

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

ios - iOS プロトコル GCDAsyncSocket

CocoaAsyncSocket/GCDAsyncSocket が使用されている tcp 経由で netty サーバーに protobuf メッセージを送信する必要がある小さなアプリを作成しています。

これを行うには、次のコードを使用します。

ただし、コードは writeToCodedOutputStream で常に「領域不足」エラーを受け取りました。詳細なトレース情報は、writeToCodedOutputStream/writeEnum/writeTag/writeRawVariant32/writeRawByte/flush です。

何か助けはありますか?ありがとう!

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

tcp - AsyncSocket: 常に着信 TCP メッセージをリッスンします

TCP経由でサーバーに接続し、受信データを継続的にリッスンするサービスが必要です。次の方法で使用している CocoaAsyncSocket を使用しています

次に、読み取りデリゲート メソッドで:

readDataWithTimout:tag:すぐにもう一度電話するというのは正しいですか?または、着信メッセージを常に聞く (より良い) 方法はありますか?

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

ios7 - iOS7.x デバイスの電源ボタンをトリガーすると CocoaAsyncSocket 接続が切断される

アプリケーションで AsyncSocket (GCDAsyncSocket ではない) を使用しています。1つを除いて、すべてのケースで非常にうまく機能します。つまり、デバイスの電源ボタンを押すと、接続が切断されます。これは iOS 7.x デバイスでのみ発生しますが、iOS 8.x デバイスでは正常に実行されます。plist で VOIP を有効にし、以下のように onSocket:didConnectToHost:port のソケット デリゲート メソッドにそれぞれのコードを追加しました。

何か案は?

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

ios - GCDAsyncUDPSocket: IPv6 を介した UDP マルチキャストが機能しない

IPv6 を介した UDP マルチキャストが機能しません。これを行おうとしているプラ​​ットフォームは iOS (Swift を使用) です。私は持っていて、次のGCDAsyncUdpSocketように構成します:

その後、いくつかのデータをマルチキャスト アドレスに送信しようとします。

その時点で、GCDAsyncUDPSocket コードをステップ実行するとsendto、メソッド内で が呼び出されますdoSend(3919 行目)。この呼び出しは -1 を返し、エラーは「ホストへのルートがありません」です。これをiOSシミュレーターで実行しています。利用可能なすべてのネットワーク インターフェイスを列挙すると、次のようになります。

どんな助けでも大歓迎です!