問題タブ [channel]

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

java - ReadableByteChannel.read(ByteBuffer dest) の読み取りは 8KB に制限されています。なんで?

私はいくつかのコードを持っています:

  1. ReadableByteChannela から aに読み込みByteBuffer
  2. 転送されたバイトを記録し、
  3. 数十から数百ミリ秒休止し、
  4. ByteBufferをに渡しWritableByteChannelます。

いくつかの詳細:

  • どちらのチャネルも TCP/IP ソケットです。
  • 合計接続読み取りサイズは数十メガバイトです。
  • ソース ソケット (ReadableByteChannelからバイトを取得している) が同じマシン上にある。
  • HP DL380s 上の Debian Lenny 64 ビット
  • Sun Java 1.6.0 アップデート 20

問題は、 ByteBuffer がどれだけ大きく割り当てられていても、 または のいずれかで.allocate().allocateDirect()ByteBuffer に読み取られるバイト数が 8KB で最大になることです。私のターゲット ByteBuffer サイズは 256KB です。これはごく一部 (1/32) しか使用されていません。約 10% の時間で 2896 バイトしか読み込まれません。

OS の TCP バッファ設定を確認しましたが、問題ないようです。これは、バッファ内のバイト数に関する netstat のレポートを見ることで確認できます。両方とも、ソケット バッファ内に 8KB を超えるデータがあります。

ここで際立っているのは、TCP と TCP6 の混在ですが、それは問題ではないと思います。上記の出力では、私の Java クライアントはポート 53404 にあります。

遅延よりも帯域幅を優先するようにソケットのプロパティを設定しようとしましたが、変更はありません。

の値をログに記録するとsocket.getReceiveBufferSize()、一貫してわずか 43856 バイトと報告されます。思ったより小さいですが、それでも 8KB を超えています。(これはまた、私が予想していたであろう非常に丸い数ではありません。)

ここで何が問題なのか、私は本当に困惑しています。理論的には、知る限り、これは起こるべきではありません。ストリームベースのソリューションに「ダウングレード」することは望ましくありませんが、ソリューションが見つからない場合は、ストリーム ベースのソリューションに移行します。

私は何が欠けていますか?修正するにはどうすればよいですか?

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

wcf - WCF から ASP.NET へのコールバックは可能ですか?

別のボックスのIISでホストされているWebサービスと、別のボックスのWindowsサービスでホストされているWCFサービスがあります(N層アプローチ)。ここで、Web サービスは WCF サービスのクライアントです。ファイルをアップロードする要求は、IIS がホストする Web サービスに届きます。IIS がホストする Web サービスは、代わりに WCF サービスを呼び出し、実際のアップロードを行います。ここまでは順調ですね。アップロードが完了すると、WCF サービスがコールバックを実行します (コールバックを辞書に保存し、(InstanceContextMode=InstanceContextMode.PerSession, ConcurrencyMode=ConcurrencyMode.Multiple) を使用しました)。WCF サービスがコールバックを送信します。トレース ビューアーでは、ASP.NET がコールバックを受信したように見えますが、ブラウザー (これはエンド ユーザーです) のアップロード ページは完全にフリーズします。larsw による ChunkingChannel バインディングを使用しています。

まず第一に、John Saundars がこのリンクで述べたように、上記のシナリオを実装することはまったく可能ですか?

「OperationContext.Current.GetCallbackChannel」は実際に何をしますか?

助けてくれてありがとう。

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

java - スレッド割り込みが入力ストリーム読み取りでのブロッキング呼び出しを終了しない

RXTXを使用してシリアルポートからデータを読み取ります。読み取りは、次の方法で生成されたスレッド内で行われます。

SerialReaderクラスは、Runnableを実装し、無期限にループし、ポートから読み取り、データを有用なパッケージに構築してから、他のアプリケーションに送信します。しかし、私はそれを次の単純さに減らしました:

ユーザーが停止ボタンをクリックすると、次の機能が起動し、理論的には入力ストリームを閉じて、ブロックしているbyteChan.read(buffer)呼び出しから抜け出します。コードは次のとおりです。

ただし、このコードを実行すると、ClosedByInterruptExceptionが発生することはありません。これは、入力ストリームが閉じたときに発生する必要があります。さらに、serial.close()の呼び出しで実行がブロックされます。これは、基になる入力ストリームが読み取り呼び出しでブロックされているためです。割り込み呼び出しをbyteChan.close()に置き換えてみましたが、AsynchronousCloseExceptionが発生するはずですが、同じ結果が得られます。

私が欠けているものについての助けをいただければ幸いです。

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

.net - .NET リモート処理がコールバックの実行に使用するチャネルを指定する方法

X:// と Y:// としましょう。

クライアントへのコールバックを実行する必要があるサーバー (S) 上のクライアント (C) から (リモーティング経由で) サービスを呼び出す場合 (S->C)、使用するチャネルを指定する方法はありますか? 私の使用例では、X:// からの呼び出しはすべて X:// 経由でコールバックし、Y:// 経由の呼び出しは Y:// 経由でコールバックします。

私の現在の解決策は、シリアル化時に他のチャネルの URI を SerializationInfo から削除する MarshalByRefObjects の各チャネルにカスタムのシリアル化サロゲート (およびセレクター) を実装することです。に似ている:

これは実際には機能しますが、間違っているように感じます (例: 入力された SerializationInfo の「channelInfo」文字列に依存する)。誰もがより良い解決策を知っていますか? RemotingServices.GetObjectData をかなり詳しく調べましたが、URI リストをどこから取得するのかまだわかりませんでした。

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

php - チャネルにインストールされているパッケージを一覧表示します

fooPHPのPEARを使用して、チャネル内のパッケージbarがすでにインストールされているかどうかを確認するにはどうすればよいですか?bar(チャネルが使用可能であり、すでに「検出」されていると仮定します。)pear listチャネルにのみインストールされたパッケージを表示するようなものbarが理想的です。

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

firefox - FF拡張機能:POSTを監視するためのヘルプが必要です

HTTPリクエスト、特にPOSTを監視する拡張機能を作成しようとしています。私はそれらすべてにアクセスするのに問題があります-いくつかのものがすり抜けています、そして私は理由がわかりません。他のタブ、iframe、またはXHRリクエストが原因だと思います。私がやりたいのは、単一のリスナー/ハンドラーを作成し、それを介してすべての要求をファネルすることです。誰かが助けることができますか?例えば:

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

asp.net - asp.netのTVチューナーカードからTVチャンネルをストリーミングする方法は?

TV チューナー カードを搭載したシステムを使用しています。私のプロジェクトでは、チャンネルの 1 つを自分のシステムから LAN 内の他のユーザーにストリーミングしたいと考えています。

TV チューナー カードから TV チャンネルをストリーミングする方法がわかりません。

C# で ASP.NET を使用したいと考えています。

この要件の解決策を見つけるのを手伝ってください。

前もって感謝します。

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

antlr - antlr 3 で非表示のチャネルを処理する

ある言語を別の言語に翻訳するための ANTRL 文法を書いていますが、HIDDEN チャネルの使用に関するドキュメントは非常に不足しています。どこにも例が見つかりません。私が見つけた唯一のことは、www.antlr.org の FAQ であり、非表示のチャネルにアクセスする方法が説明されていますが、この機能の最適な使用方法は説明されていません。対象言語は Java です。

私の文法ファイルでは、空白とコメントを次のように渡します。

メンバー セクションで、非表示のチャネル トークンを出力 StringStream に書き込むメソッドを定義しました...

これを使用するには、文法内のすべてのトークンの後にメソッドを呼び出す必要があります。

確かにもっと良い方法があるはずですか?

編集: これは入力言語の例です:

0 投票する
4 に答える
2777 参照

go - Goのチャネルの動的リストで入力を選択する方法は?

Goには、いくつかのチャネルの1つであるselectステートメントからのブロッキング読み取りを実行するメカニズムがあります。だからあなたは言うことができます

これらの2つのチャネルのいずれかから入力を取得するまでブロックします。非常に素晴らしい。

ただし、これには、ポーリングするチャネルの数をソースコードで指定する必要があります。チャネルのスライスまたは配列があり、それらのいずれかに入力が入るまでブロックしたい場合はどうなりますか?

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

c#-4.0 - WCFクライアント-クライアントはいつチャネルを閉じる必要がありますか

サービスがWCFである一般的なクライアントサービスアプリケーションでは、サービス参照をどのように使用しますか?

たとえば、呼び出しごとに個別にサービスをインスタンス化しますか、それとも1つ開いて、クライアントアプリの存続期間を通じてサービスを維持しますか?(「サービスのインスタンス化」を参照している場合、svcutilによって作成されたサービスオブジェクトをインスタンス化することを意味します)

今のところ、クライアントで1つのサービスインスタンスを使用しました。これは、呼び出しごとにサービスを作成、開閉するよりも高速であるように見えたためですが、それで問題ないかどうか迷っていますか?このアプローチで発生する主な問題は、タイムアウトが発生する(または、セッションを10時間開く必要がある)、接続が切断されるなどです。すべてが正常であることを確認するために、チャネルを介して常に「IsAlive」を実行する必要があります...

関連性がある場合、アプリはシングルスレッドであり、認証はカスタムビルドされます(ヘッダーに認証トークンを挿入することにより)。バインディングはbasicHttpです(またはws、この場合は実際には重要ではありません)。