問題タブ [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 投票する
2 に答える
2601 参照

c# - コールバックc#からの未処理の例外エラー

私は3層アーキテクチャを使用しており、tcpソケットを使用してトランスポート層(TCPクライアント)でデータを送信します。このメソッドは、BeginSendメソッドを使用して非同期に実行されます。

コールバックコードSendData()は以下のとおりです

サーバーが切断されると、クライアントはデータを送信するまでわからないため、Connectedプロパティはtrueになります。次に、remote.BeginReceive()行は、カスタム例外(sockCommunicationException)をキャプチャしてスローしようとするSocketExceptionをスローします。

ただし、これを行うと、未処理の例外が発生します。このエラーをビジネスレイヤーを介してUIにバブルしたいと思います。このような例外がコールバックメソッドで発生した場合、どこで発生しますか?

この未処理の例外を回避し、この例外をUIレイヤーにバブルするにはどうすればよいですか。

助けてください。

前もって感謝します!

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

c++ - BIO_ctrl_pending()での非同期OpenSSLの問題

OpenSSLをラップする非同期クライアントおよびサーバーアプリケーションがあります。作成されると、SSL_set_connect_state()/ SSL_set_accept_state()をそれぞれ呼び出して、内部状態を初期化します。この時点まで、すべてが正常に実行されています。前述の状態が設定されると、握手が開始できると思います。上記の握手を初期化するために次のことを行います(スニペット):

ここが面白いところです。BIO_ctrl_pending()呼び出しは失敗し、SSL_get_error()を実行すると、SSL_ERROR_WANT_READで返されます。その場合、明らかに私の読み取りコードは実行されません。コードスニペットの上に次の行を追加しました。

これで、コードを実行すると、BIO_ctrl_pending()が適切な量(210)を返し、コードはBIOからの読み取りに進み、ハンドシェイクを開始できます。

私の質問は、これは状態が適切に設定されないOpenSSLのある種のバグですか?それとも私は何かが足りないのですか?

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

objective-c - NSTimer が AsyncSocket ライブラリで動作しない

AsyncSocket ライブラリを使用しており、NSTimer を作成しようとしましたが、起動しません。Async ソケット コードを削除すると、タイマーが動作します。AsyncSockets がこれを引き起こしていると確信しているので、NSTimers を使用するにはどうすればよいですか?

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

iphone - iPhone のセカンダリ スレッドで AsyncSocket を使用する

iPhone で AsyncSocket を使用してサーバーと通信します。AsyncSocket は実行ループに基づいていますが、私のアプリはスレッドに基づいています。つまり、新しいスレッドを開始してデータを書き込み、同じスレッドで応答が受信されるまで待ちます。しかし、別のスレッドから AsyncSocket のメソッドを直接呼び出すことはできません。使用する必要があります。

それは機能しますが、この方法で呼び出されたメソッド「writeSomeData:」からの応答を取得できません。

メソッド writeSomeData: は、次のようなことを行います。

クラス変数「dataReceived」にアクセスしてレスポンスを取得できましたが、今回は内容が変更されています。

別のスレッドで AsyncSocket を使用する方法 (または、一般的に実行ループ ベースのクラスを処理する方法) を教えてもらえますか?そのクラスのメソッドを呼び出すと、メソッドが実行されて応答が受信されるまでブロックされますか?

ありがとうございました。

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

c# - .Net Socket:AsyncCallback/AsyncWaitHandleをより適切に実装する方法

私はC#でソケットサーバーを構築することを試みていますが、 AsyncCallbackをソケットのBeginReceiveメソッドに渡すと、コールバックがすぐに呼び出され、IAsyncResultのAsyncStateプロパティを読み取るとnullが発生するという問題があります。

追加することでこれを「修正」したと思いました

しかし、問題はまだ発生しています。誰かが私が間違っているところに何か光を当てることができますか?

私のコードは次のとおりです(省略):

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

c# - C#非同期TCPサーバーのやり過ぎ?

これは実際には実装に関する質問なので、特定のケースから始めるのが最善だと思います。

モバイルクライアントから非同期でTCP接続をリッスンするC#サーバーがあります。モバイルクライアントが接続する新しいスレッドが開始されると、クライアントは小さな(通常は100バイト未満)テキストメッセージを送信し、同様のサイズのメッセージを受信します。サーバーが応答すると、サーバーは接続を閉じてスレッドを終了します。

現在の基本的な使用法は、ユーザーがログインし、場合によっては最大5分間チェックし、小さなメッセージを送信してサーバー上に新しいスレッドをすばやく作成し、数時間後に切断して再接続することです。また、すべてのユーザーは自分のPCで実行する独自のサーバーを持っているため、ほとんどのサーバーでは、常に1つのクライアントしか接続されません。まれなケースでは2つです。

現在、次のエラーが発生しています。既存の接続がリモートホストによって強制的に閉じられましたが、これは間違っているのでしょうか。

だから私の質問:

  1. 私の現在の設定はここで適切ですか?
  2. もしそうなら、私は小さなメッセージが送信された後にスレッドを終了するべきですか、それとも一定期間アイドル状態の後にスレッドを存続させて閉じるべきですか?
  3. 私がすべてを正しく行っているという偶然の機会に、非常にありそうもないことですが、あきらめる前に数回再試行するだけでエラーを回避する必要がありますか?
  4. 第4に、最後に、そのエラーはサーバーを完全に強制終了します(サーバーは別のプロセスによって生成され、トラップされていない例外があれば強制終了します)。これまでに完了し、実装に問題がない場合、どうすればそれを回避できますか?

編集:

ここでいくつかの質問に答えて:

  • 例外は、すべてのデータを受信する前に発生しますが、ユーザーが複数のメッセージをすばやく連続して送信した場合に限ります。
  • ユーザーがWindowsServerを実行していない限り、最大バックログは5であることを思い出しますが、私は自分の設定をしておらず、デフォルトが何であるかわからないので、明示的に5に設定してみます。

非同期サーバーコード:

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

iphone - AsyncSocket はデリゲートを呼び出さない

AsyncSocket を使用しようとすると、奇妙な問題が発生します。私のアプリでは、すべての通信をバックグラウンドで別のレベルで処理するため、実際には同期ソケットが必要です。そこで、AsyncSocket クラス SyncSocket のラッパーを作成してみます。コードは次のとおりです。

問題は次のとおりです。AsyncSocket はホストに問題なく接続しますが、デリゲートの didConnetToHost は呼び出されません。また、AsyncSocket コードをデバッグすると、デリゲートが設定されていてもrespondsToSelector失敗することがわかります。奇妙なメモリ違反か何かがあるように見えますが、どこでミスをしたのかわかりません。

何か案は?AsyncSocket を同期ソケットにラップする方法の良い例はありますか?

PS: 明確にするために: XCode 3.2.5、iPhone Simulator 4.2。

更新: SyncSocket でラップしようとしている理由は、すべてのソケット デリゲートをアプリケーションのビジネス ロジックから隠したかったからです。さまざまな場所でソケット接続を使用する必要があり、さまざまな場所で低レベルのソケット機能 (ソケットの状態の検出、メッセージのヘッダーの受信、本文の受信など) を実装したくありません。低レベルの実装について心配せずに、開く/送信/受信できるシンプルなインターフェイスが必要です。ネットワーク接続は別のスレッドで実行する必要があることは理解していますが、それで問題ありません。メイン スレッドで 1 つのバックグラウンド ワーカーを作成しても問題ありません。

そこで、出発点として AsyncSocket リポジトリから InterfaceTest サンプルを取得しました。そこからDNS関連のものを削除しました。正常に動作します。didConnect が呼び出され、すべてがピカピカです。

次に、プロジェクトに SyncSocket 実装を追加して、何が問題なのかを確認しました。プロジェクトはここからダウンロードできます: http://dl.dropbox.com/u/6402890/NetworkTest.zip - 誰かが私が間違っていることを教えてくれるかもしれません - 私はスレッドを適切に使用していないと感じました同期ソケット。

待機ループasyncSocket is Connectedと内部の両方で使用するとself.waiting、そのループから抜け出し、didConnect呼び出されます(ただし、ループが終了した後)。self.waitingdidConnect に設定されている my のみを使用しようとするdidConnectと、呼び出されず、アプリケーションがハングします。

誰が何が悪いのか教えてもらえますか?

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

objective-c - メモリリークのトレース

ココア アプリケーションにメモリ リークがあり、その所有者を見つけるために可能な限りのことをしましたが、見つけることができませんでした。リークは、 AsyncSocketフレームワークの GCD バージョンを実装した数日前に始まりました。リークが発生しているのが自分のコードなのか、それともライブラリ自体なのかはわかりません。Instruments は、適切なバック トレースを提供しません。あいまいなものだけ:

より高度なトレースやリバース エンジニアリングなどを行うために必要な方向を教えてもらえますか?

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

iphone - AsyncSocket 設定タイムアウト

ローカル ネットワーク デバイスにデータを送信しています。
デバイスがオフの場合、タイムアウトは 75 秒後にトリガーされます。このコードを使用して、このタイムアウトを減らしたい:

ただし、Timeout パラメーターは動作を変更しません。また、特別な値 -1 と 0 は何の効果もないように見えますか?

タイムアウトを設定するにはどうすればよいですか?

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

c# - C# Async Webserver - クライアントにデータを送信する方法

これは、経験豊富な C# 開発者にとって簡単なことかもしれません。

ここに表示されているのは、サンプルの非同期 Web サーバーです。

作業する基本モデルを用意するために、これを Web からダウンロードしました。

基本的に私がする必要があるのは、この Web サーバーをコンピューター内のプロセスとして実行することです。常にポート 8080 をリッスンし、クライアント コンピューターが要求を送信すると、このサーバーはデータを処理し、結果を文字列として返します。

このコードを使用して小さなプロジェクトを作成しました (そのままで機能します) が、行を実行すると

私が得るのはブラウザのエラーか、せいぜい空白のページだけです

(メッセージ) と共に送信する HTTP ヘッダーを定義する必要があると思われますが、これについて Web を検索していましたが、うまくいきませんでした。

喜んで手伝ってくれる人はいますか?

ありがとう!