2011-10-31 7 views
8

私は現在C#を初めて使用しています。単純なサーバークライアントアーキテクチャを理解する必要があります。初心者のためのC#での単純なネットワークプログラミング?

私は現在、基本的にクライアントが変数をサーバーに送信し、サーバーが別のクライアントに送信できる単純なサーバー/クライアントプログラムを作成しようとしています。問題は、私はまだJavaでいくつかの経験を持っていますが(しかしまだネットワーキングではありませんが)私はまだC#にはまだ新しいので、私は実際にはこれが盲目です。

私の質問は:私は記述する必要があります

  1. どのように多くのファイル?
  2. 誰かがこのようなプログラムのフレームワークや例を私に提供するのに十分親切かもしれませんか?
  3. TCPサーバーとは何ですか?

これはオンラインゲームを対象としています。 1つのクライアントがサイコロを振り、サーバーは他のすべてのクライアントに最初のクライアントがロールした値を表示する必要があります。

ご協力いただければ幸いです!ご質問のすべてに

+4

ヒント:クライアントを信用してはいけません。通常、クライアントは、サイコロをロールバックするサーバーを依頼する必要があり、サーバがすべてのクライアントに巻かれた値を送信します。 –

+1

私はあなたがWCFに見てください。 WCFの初心者のための素晴らしい本は、[ステップバイステップWCF](http://shop.oreilly.com/product/0790145302403.do)です。あなたがしようとしていることを具体的にしたい場合は、チャットクライアントの例を先読みすることができます。また、Wcfは認証認可プロセスを簡素化します。 – Garvin

答えて

3

1)ファイルの数があなたの特定の実装に依存します。このアーキテクチャーは、サーバー用に1クラス、クライアント用に1クラス(ファイル内に複数のクラスを持つことができる)のように簡単に作成できます。設計中に行う複雑さや選択に応じて、多くのファイルを持つことができます。

2)単純なTCPサーバ/クライアントのための良好なチュートリアルhere

3に見出すことができる)TCPサーバは、TCPクライアントからの接続を待つ処理です。 TCPは、伝送制御プロトコルの略です。 Wikipediaから:TCPは、あるコンピュータ上のプログラムから別のコンピュータ上の別のプログラムへのバイトストリームの、信頼性の高い順序付けされた配信を提供します。

4

あなたは戦略を策定する必要があるので(状態が必要なので)TCPを計画しているので、接続を確立したり、何らかのデータを前後に移動させることについては十分な情報が得られます。 Googleは、あなたが処理できる以上のものを提供します。すべての作業をせずに、ここではあなたを指向させるためのいくつかのステップがあります。

1)接続登録 - クライアントがオンラインになり、サーバーと通信したい場合は、最初に「こんにちは私はここにおり、いくつかのサイコロをしたい」と言う必要があります。この初期ハンドシェイクは、ハートビートおよび/またはトランザクションに使用される接続IDであり得る。サーバーはこれを使用してデータを識別し、開いている場合はそれぞれのスレッドを識別します。

2)ハートビート - クライアントがサーバーに登録したので、クライアントはハートビートを提供する責任があります。ハートビートは依然として存在し、依然として作業を続ける予定です。通常、3〜10秒ごとに良好です。

3)リクエスト/レスポンスプロトコルを開発する - 「すべてのコマンド」には正式なプロセスがあります。この正式なプロセスには、接続IDだけでなく要求IDも含まれます。クライアントは、対応する要求IDを受信しない限り、応答を受け入れません。さらに、すべてのリクエストには、APIに準拠しているかどうかを識別するための成功または失敗の応答が必要です。要求内で実行するコマンドまたはアクションになります。一部の人々は、エントリポイントメソッドを呼び出すためにIDにスイッチを使用するコマンドIDを派遣するint型のを使用します(CMD ID = 1(接続され)、= 2 CMD IDがなどrolldice()、です)。コマンドの結果を識別する追加のペイロードを含めることができます。要するに

、1 2は、キープアライブであり、図3は、前後のデータを渡して、ハンドシェイクです。

今ソケットまたはWCFを使用するかどうか、私はWCFで実行しれるtcpClientプログラミングの基本的な理解を持ってお勧めします。シンプルなソケットプログラミングがいかにすごく驚かれるでしょうが、オーバーヘッドはキラーです。誰も怖がらない。呼び出し、スレッド、セキュリティはもちろんのこと、コーディネートする作業はたくさんあります。一方、WCFはこのオーバーヘッドの一部を削ってしまいます。私はこの質問をチェックアウトしたい

...

How to use socket based client with WCF (net.tcp) service?

関連する問題