問題タブ [asyncsocket]

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 に答える
3125 参照

c# - 非同期ソケット操作とメッセージ フレーミングに関する .NET の質問

TCP メッセージ フレーミングを処理する方法の例をあらゆる場所で探しています。NetworkStreams が StreamReader または StreamWriter オブジェクトに渡され、'\n' で区切られたメッセージに ReadLine または WriteLine メソッドを使用する例を数多く見てきました。私のアプリケーション プロトコルには「\n」で終わるメッセージが含まれているため、NetworkStream が適しているようです。ただし、これらすべてを非同期ソケットと組み合わせて処理する適切な方法に関する具体的な例は見つかりません。以下で ReceiveCallback() が呼び出された場合、NetworkStream および StreamReader クラスを実装してメッセージのフレーミングを処理するにはどうすればよいですか? 私が読んだことによると、1 回の受信で 1 つのメッセージの一部を取得し、次の受信で残りのメッセージ (「\n」を含む) を取得する場合があります。これは、あるメッセージの終わりと次のメッセージの一部を取得できるということですか? 確かに、これを処理する簡単な方法があるはずです。

次のコードがあります。

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

networking - IOS4-WifiでUDPソケットを使用してデータを送信する

AsyncUDPSocketクラスを使用してデータを送信しようとしています。また、iPhoneシミュレーターを使用して、単純なCコード化されたリスニングサーバーを実行している別のマシンにネットワーク経由でデータを送信できます。シミュレーター(サーバー)に接続されたクライアントを使用して、有線でデータを受信することもできます。しかし、シミュレーターを使用してWifiで同じことを試したところ、データを送信することはできましたが、データを受信することはできませんでした。

私は別の投稿を読みました、そのユニキャストデータはこれを可能にします。AsyncUDPSocketを使用してこれを達成するにはどうすればよいですか?

ありがとう、アンジェロ。

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

iphone - AsyncSocket は一度だけ読み取りますか?


CLRFdata のない単純なクライアント サーバーを作成しますが、メッセージのヘッダーに長さのメッセージを付けます。これは私のコードです:

このメソッドはデータを送信します

このメソッドは、ソケット長 = 1 バイトからヘッダーのコードの長さまでデータを読み取ります。

そしてこの方法

このコードを使用してサーバーからデータを送信し、データを受信することに成功しました。ログインを試み、サーバーがデータと通知を取得し、このコードでメッセージを受信しましたが、その後、メッセージを再度送信するとサーバーからメッセージを受信できませんが、 TCPDUMP で、サーバーに送信されたメッセージと、メッセージを含むサーバーの応答が表示されますか?

誰でも問題のあるコードを修正できますか? ありがとう。

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

sockets - Unix SOCK_STREAM ソケットから大量のデータを読み取る

非同期 I/O は初めてです。Unix SOCK_STREAM ソケットから大量のデータを読み取る必要があります。ノンブロッキング ソケットを使用しています。複数の read/recv() が必要になる場合があります。その部分は私には問題ありません。

私の疑問は-一度に3〜4台のクライアントがサーバーソケットに巨大なデータを書き込んでいる場合、それぞれが100Kのデータを書き込んでいると言います。最初の読み取りで client1 から一部のデータ (たとえば 40 K) を読み取り、2 回目の読み取りでクライアント 2 からデータを読み取り、3 回目の読み取りで client1 から残りのデータを再び読み取るというシナリオになる可能性がありますか?

よろしくDJ

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

c# - サーバーソケットを介して別のソケットにデータを安全にストリーミングする方法は?

設計中の iPhone アプリケーション用のサーバー アプリケーションを作成しています。iPhone アプリは C# (MonoTouch) で作成され、サーバーも C# (.NET 4.0) で作成されています。

ネットワーク層に非同期ソケットを使用しています。サーバーにより、2 つ以上の iPhone (「デバイス」) が相互に接続し、データを双方向に送信できるようになります。着信メッセージに応じて、サーバーはメッセージ自体を処理するか、送信デバイスと同じグループ内の他のデバイスにデータを中継します。この決定は、最初にパケットのヘッダーをデコードし、それがどのタイプのパケットであるかを判断することによって行うことができます。

これは、最初の 8 バイトが 2 つの整数、ヘッダーの長さとペイロードの長さ (ヘッダーよりもはるかに長くなる可能性があります) になるようにストリームをフレーミングすることによって行われます。

サーバーは、ソケットから最初の 8 バイトを (非同期で) 読み取るため、2 つのセクションの長さになります。次に、ヘッダー セクションの全長まで再度読み取ります。

次に、ヘッダーを逆シリアル化し、その中の情報に基づいて、残りのデータ (ペイロード) を別のデバイスに転送する必要があるかどうか、またはサーバー自体が処理する必要があるかどうかを確認できます。別のデバイスに転送する必要がある場合、次のステップは、ソケットに入ってくるデータをたとえば 1024 バイトのチャンクで読み取り、受信側デバイスに接続されている別のソケットを介して非同期送信を使用してこれらを直接書き込むことです。

これにより、サーバーのメモリ要件が軽減されます。パケット全体をバッファーにロードしてから、ネットワークを介して受信者に再送信するわけではないからです。

ただし、非同期ソケットの性質上、1 回の読み取りでペイロード全体を受信できるとは限らないため、すべてのバイトを受信するまで読み取りを続ける必要があります。最終宛先に中継する場合、これは、送信者から受信したバイトのチャンクごとに BeginSend() を呼び出し、そのチャンクを一度に 1 チャンクずつ受信者に転送することを意味します。

これに関する問題は、非同期ソケットを使用しているため、別のスレッドが同じ受信者 (したがって同じ最終宛先ソケット) で同様の操作を実行する可能性が残り、両方のスレッドからのチャンクが発生する可能性が高いことです。混乱して、その受信者に送信されるすべてのデータが破損します。例: 最初のスレッドがチャンクを送信し、送信者からの次のチャンクを待機している場合 (それを中継できるようにするため)、2 番目のスレッドはデータのチャンクの 1 つを送信し、最初のスレッド (および2番目のスレッドのそれについては)データ。

これを書いているとき、ソケット オブジェクトをロックするのと同じくらい簡単なのだろうか?! これは正しいオプションでしょうか、それとも他の問題を引き起こす可能性がありますか (例: リモート デバイスから送り返されているロックされたソケットを介してデータを受信する際の問題?)

前もって感謝します!

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

udp - asyncudpsocket が期待どおりに UDP を送信しない

mini MAC 10.5.8 および Simulator 3.1 で XCODE 3.1.4 を実行しています。リモート コントロール用に短い UDP 文字列を送信したいので、次のコードを作成しました。

基本的に、シミュレーターでコンパイルして実行します...しかし、UDPをターゲットに送信することはありません。なぜうまくいかないのか誰かが私に手がかりを教えてくれることを願っています

私の.Hコード

私の.mコード

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

c - UNIXソケットでの非同期とノンブロッキングの違いは何ですか?

私はnginxでそのようなコードを見ています:

fcntl(s, F_SETFL, fcntl(s, F_GETFL) | O_NONBLOCK)ioctl(s, FIOASYNC, &on),aren'tasyncと同じことの違いは何nonblockingですか??

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

ios - iPadでソケット経由でカウンターを同期する方法

私は、再生される mp3 曲の時間情報を表示するアプリケーションを PC に持っています。この時間情報を iPad アプリ内に表示する必要があります。残り時間、プレーヤーの位置、曲の長さのカウント タイマーは、iPad と PC の間で同期されている必要があります。

ソケット接続 (iPad では AsyncSocket) を使用して、カウンターの同期を維持することを考えました。

これを行うより良い方法はありますか?間違った方向に走りたくない…

さらに、将来的には複数の iPad で情報を表示できるようになるはずです。これは「あると便利」な機能です。

コード スニペットをすぐに使用できるようにする必要はありません。これは理論的な問題です。(誰かがすぐに使用できるコード スニペットを持っている場合、それは私にとっても良いことです :-) )

マッドマックスアプリ

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

iphone - iOS SDK: ポートが開いているかどうかを確認するにはどうすればよいですか?

ポートが開いているかどうかを確認する方法については、まだ何も見つかりませんでした。AsyncSocket クラスで実現しようとしましたが、サーバー上のそのポートへのすべての接続を拒否しても、常に TRUE を返します。さらに、isConnectedAsyncSocket のメソッドを使用しようとしましたが、常に FALSE を返します。

これまでの私のコード:

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

ios - iPad での Windows/Mac アプリの画面とアクションのストリーミング

私は現在、リモート Windows/Mac アプリケーションのストリームが iPad に表示される iPad のプロジェクトに取り組んでいます。最後に、iPad のタッチを通じて、リモートの Windows/Mac アプリでアクションを実行できます。いくつか質問があります : - リモート アプリのスクリーン ショットを x 秒ごとに作成し、その画像を iPad アプリに転送する必要がありますか、それとももっと簡単な方法はありますか? - 現在、Asyncsocket を使用してネットワークに Bonjour プロトコルを使用していますが、接続を介してタッチ イベントをどのように送信できるかわかりません。

どうも