0

そこで、クライアントとサーバーの間で情報を単純に送受信するこの tcp プログラムを作成しています。

私のセットアップは次のように機能します:

1)サーバーがリッスンを開始します

2) クライアントは「hello」コマンドとユーザー名/パスワードを送信します

3) サーバーは「correctpass」または「wrongpass」のいずれかを送信します

4) クライアントは 50kb 間隔で大量のデータを送信し始めます

5)サーバーはこのデータを受信して​​保存します

私の質問は次のとおりです。サーバーがリッスンしていないときにクライアントがデータを送信しないようにするためにすべきことはありますか? たとえば、データを正常に取得したことを示すコマンドをサーバーから送信する必要がありますか? データを順番通りに並べることができないので、これは疑問に思っています。

私は tcp 経由で受信しており、TCP がすべてのデータをサーバーに送信する必要があることを理解していますが、私の問題は、送信時にサーバーが読み取っていない可能性があることです。

私の他の質問は次のとおりです。TCP は、インターネット経由で大量の小さなデータを送信するのに適したプロトコルですか? これは、Dropbox や他の同期ユーティリティがサーバーと通信する方法ですか?

編集:現在、C#とネットワークストリームを使用して通信しています

ありがとう、

ロヒット

4

2 に答える 2

0

私の問題は、サーバーが送信されたときにサーバーが読み取っていない可能性があることです。

あなたが心配している問題は実際には存在しません。サーバーで接続が開いていない場合は、「接続リセット」が発生します。サーバーが書き込み速度よりも速く読み取っていない場合、書き込みはブロッキングモードでブロックされるか、非ブロッキングモードで再試行指示を返します。

于 2012-05-16T01:46:04.420 に答える
0

まず、すでに発明されているデータ通信プロトコルと標準について読む必要があると思います。OSI/ISO http://en.wikipedia.org/wiki/OSI_modelが含まれ ており、tcp と udp、http、rest などのレベルを理解するのに役立ちます。WCF のような相互作用と通信のために設計されたテクノロジについて学びます。ただし、カスタム プロトコルで遊ぶことを忘れないでください。これにより、データ通信がどのように機能するか、異なるプロトコルやテクノロジを使用する理由とタイミングを体験して表現できます。

データ転送の競合を回避するには、通信の要求/応答構成を使用できます。

しかし、WCF サービスを使用すると、データ転送を簡単に行うことができます。多くのコーディングやミスがなければ。

TCP はデータの送信に適し、データの破損から保護されます。

于 2012-05-15T23:38:59.583 に答える