0

こんにちは私たちはユニークなプロジェクトを書いています。私はTCPプログラミングに慣れていないので、誰かが私たちを正しい方向に向けることができるかどうか疑問に思っていました.

外部システムと対話します。TCP パケットを送信し、TCP 応答を受信します。これは、Web アプリケーションのページから動作する必要があり、x ミリ秒ごとに継続的にポーリングします。

提案されたメッセージの長さは 8 バイトで、メッセージの開始または終了に関する情報は送信されません。メッセージ構造: | バイト 0 | バイト 1 | バイト 2 | バイト 3 | バイト 4 | バイト 5 | バイト 6 | バイト 7 |

メッセージ区切り文字は次のとおりです。バイト 0 | = 0x02 (stx) および | バイト 7 | = 0x03 (エトックス)

私の送信メッセージ: | stx | 's' | 'b' | '0' | '0' | '0' |'0' |etx |

私の受信メッセージ: | stx | 'S' | 'B' | '0' | '1' | '0' | '0' | etx |

質問:

tcpCLient/Listener クラスと Sockets クラスのどちらを使用する必要がありますか?

これらのパケットを x ミリ秒ごとに継続的にポーリングして送受信するように Web ページを取得する最良の方法は何ですか?

4

2 に答える 2

0

Javascript はダイレクト TCP/IP をサポートしていないため、あなたが提案していることは基本的に実行できません。サーバーで TCP プロセスを実行し、非同期更新メソッドを使用して Web ページに結果を表示する必要があります。

ページに結果を非同期的に表示するには、Ajax と Comet を使用する必要があります。Comet には、基本的に 3 つのオプションがあります。

  1. タイマー コールバックから呼び出される Ajax リクエストを使用して、Javascript がサーバーをポーリングするようにします。これには、ポーリングのすべての欠点があります。
  2. 「ロング ポール」を使用します。これは基本的に、結果が得られるまでブロックする Web サイトへの非同期呼び出しを行うことを意味します。これは、すべてのクライアント Web ページの IIS スレッドをロックするため、うまくスケーリングできません。
  3. comet サーバーと関連するクライアント側ライブラリを使用するのが最善の方法ですが、通常は費用がかかります。

Web 上には、Comet と Ajax に関する多くの情報があります。

于 2011-02-10T23:33:42.793 に答える
0

現時点ではサポートが非常に限られていますが、クライアント側の通信にWebSocketを検討することをお勧めします。

もう 1 つのオプションは、通信.swfの仲介としてファイルを使用することです。http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/Socket.htmlTCPを参照してください。関心のあるパケットを受信するたびに、Flash ムービーからデータを渡したり、熱心に待っている JavaScript にデータを渡すことができます!ExternalInterface

于 2011-02-10T23:42:26.760 に答える