問題タブ [gcdasyncsocket]

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 投票する
1 に答える
315 参照

iphone - GCDAsyncSocket と SIP パケットの送信

INVITEをSIPサーバーに送信しようとしています:

中身

そして、ソケットが接続されたとき:

ここに結果があります:

しかし、whireshark にチェックインすると、SIP のようにパケットが検出されません。どこが間違っていますか?

ここに画像の説明を入力

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

ios - GCDAsyncUDPSocket ソース アドレスが null を返す

Google コードの質問ミラー: https://groups.google.com/forum/#!topic/cocoaasyncsocket/grhjZSMLr3U

応答を読んでいる私のコードは次のとおりです。

udp bcast を送信するコードは次のとおりです。

port と bcast addr は、それぞれ 55555 と 255.255.255.255 です。

コンソール出力:

16 進数:

why is the source address here being null? Or why is it malformed?

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

objective-c - GCDAsyncSocket readData が 1 回だけ読み取るように設計されているのはなぜですか?

GCDAsyncSocket の didReadData コールバックについて直感的ではないことがわかったのは、別の readData を発行しない限り、再度呼び出されないことです。なぜこのように設計されているのですか?ライブラリのユーザーがコールバックを取得するために別の読み取り呼び出しを開始することを期待するのは正しいですか、それともこれは設計上の欠陥ですか?

例えば

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

queue - CocoaAsyncSocket / GCDAsyncSocketは、キューへの書き込みの間に遅延を追加します

私は次の機能を持っています:

ソケットサーバーが機能するために書き込みの間に1秒ほどかかるという事実を除いて、それは完璧に機能します。誰かが同じ問題に遭遇し、これを達成する方法に光を当てることができるかどうか疑問に思いました。ありがとう。

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

ios - GCDAsyncUdpSocket + ボンジュール? (bynamic udp ポート)

私はGCDAsyncUdpSocket自分のプロジェクトに使用しています。この方法でポートをバインドできます(サーバー部分)

しかし、これには静的なポート番号を付けたくありません。UDP 通信に使用できる空きポートを取得する方法は? Bonjour を使ってサービスとして公開するつもりですか?私は正しい軌道に乗っていますか?

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

objective-c - OSX実行可能ファイルを使用したGCDAsyncSocketとの接続の問題

開発したiOSアプリで優れたGCDAsyncSocketを完全に実行しています。

同様の方法でライブラリを使用してSQLiteDBにログインするMacOSXコマンドラインプログラムを設定してみましたが、ホストへの接続を試行することすらできません。エラーは生成されません。プログラムはクラッシュしないので、なぜ機能しないのかわかりません。なぜこれが機能しないのか誰かが知っていますか?

コンソールは以下のみを出力します(接続/切断/読み取り/書き込みログはありません。つまり、ソケットデリゲートメソッドは呼び出されません)。

これが私が使用しているコードのかなりの部分です:

main.m

LoggerClass.h

LoggerClass.m

Device.h

Device.m

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

ios - バッファー転送に GCDAsyncSocket を使用しようとしています

(更新) 大きなファイル (ビデオまたは写真) を読み込んで、SOAP リクエスト経由でリモート サーバーに送信しようとしています。データを Base64 文字列としてエンコードする必要があります。私は次のようにこれをやろうとしています:

  • base64 でエンコードされたデータを「回避」する SOAP リクエスト用のテンプレート xml を作成します。

  • SOAP xml の最初の部分をバッファにプッシュする

  • ビデオ ファイルを開いてチャンクにエンコードし、エンコードされた各チャンクをバッファにプッシュします。

  • 最後に、SOAP xml の 2 番目の部分をプッシュします。

上記のようにパーツを「キューに入れる」ことができるようにするために、バッファリング機能を備えた GCDAsyncSocket を使用しようとしています。GCDAsyncSocket は TCP レベルで動作するため、HTTP POST ヘッダーを自分で記述する必要があると考えています。そのため、漠然としか理解していない可動部分が多くあり、すべて間違っている可能性があります。しかし、ソケットが離陸することさえないようで、デバッグする方法さえわかりません。これが私の関連するコードです。明らかなエラーを見つけるかどうかを確認してください。

ソケットは常に正常に接続されているようです。これは、このデリゲート メソッドを使用して確認できます。

setUpStreamsForInputFile メソッド (上記の最初のコード リストで呼び出されます):

ここで、前のメソッドの NSInputStream セットアップは、このデリゲートにイベントを送信します。

ソケットは、このデリゲートを使用してログに出力することになっています

しかし、これは一種のランダムに発生します。たとえば、最初の 2 つの if が呼び出される場合と呼び出されない場合があります。私がそうして、3番目の「if」(実際にエンコードされたデータを書き込んでいる場所)に到達すると、それは2〜3回しか書き込まれず、それだけです-ファイルのサイズを考えると、数が少なすぎると思います. SOAP xml の最後の部分を書き込む必要がある最後の「if」に到達することはありません。助けていただければ幸いです!前もって感謝します。

さらなる更新 (2013 年 3 月 19 日)

今日ソケットをテストすると、書き込みイベントがまったく発生しなくなりました。これは、ランダムであり、ひどく間違ったことをしていることを示しています。今日、接続は開きますが、次のデリゲート メソッドで確認できるように、ある時点でタイムアウトになります。

返す

socketDidDisconnect:withError: "Error Domain=NSPOSIXErrorDomain Code=60 "Operation timed out" UserInfo=0x1cd89b00 {NSLocalizedFailureReason=connect() 関数のエラー、NSLocalizedDescription=Operation timed out}"

上記のストリームデリゲートで Base64 データの書き込みをまだ実行している間。

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

cocoa-touch - GCDAsyncSocketは、切断した後でもOnPortを複数回受け入れることができません

現在ポートをリッスンしているソケットを閉じてから、そのソケットに戻ってポートでリッスンを再確立できるようにしたい。別のサーバーのリッスンソケットでの2番目のacceptOnPort呼び出しは常にエラー(アドレスはすでに使用されています)で終わるため、これを行うことはできません。リスニングソケットを閉じて新しいソケットを再確立するにはどうすればよいですか?

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

iphone - GCDAsyncSocket 書き込みタイムアウトが機能しない

GCDAsyncSocket を使用しているときに、書き込み操作にタイムアウトを設定しようとしています。コードは非常に単純で、次のとおりです。

次に、Mac でインターネット接続を無効にし、書き込みタイムアウトが発生するのを待ちますが、何も起こりません。GCDAsyncSocketWriteTimeoutError本来のエラーで切断されません。

また、インターネット接続をオフにした後、予想どおり、サーバーがメッセージの受信を停止することも検証しました。

ソース コードを調べたところ、書き込みタイムアウト イベントの発生を担当する writeTimer が常にキャンセルされる (関数endCurrentWriteが呼び出される) ことがわかりました。タイマーがキャンセルされた場所までさかのぼると、次のコード行にたどり着きました。

write システム コールは、インターネット接続がなくてもソケットがデータを送信できたかのように、送信中の合計バイト数を常に返します。これは論理的ですか?

誰かが同じ問題を思いついた、または同様の動作を見たことがありますか? または、誰かが GCDAsyncSocket の書き込みタイムアウトを設定できましたか?

どうもありがとう。