C#クライアントでC ++チャットサーバーを作成するための記事やアドバイスはありますか?
-
03-07-2019 - |
質問
現在のクラスでは、基本的なネットワークゲームの作成を計画していますが、C#クライアントでC ++サーバーを作成するタスクを引き受けることにしました。これはおそらく難しい作業だと思いますが、これを実現するためのアドバイスはないかと思っていました。
申し訳ありませんが、これ以上の情報はありません。私たちはまだ始まったばかりであり、私たちがいる時間内にこれが可能であることを確認したいだけです。
解決
これは正常に動作します。 C#とC ++は両方とも、多くのフレーバーでTCPおよびUDPネットワーク接続をサポートします。クライアントまたはサーバーのどちらでも問題なく動作します。
注意する必要がある主な問題は、データの送信方法を決定し、ワイヤを通過するすべてのパケットが同じ方法でシリアル化/逆シリアル化されることを確認することです。
これは、両側で同じ言語(または少なくともライブラリ)を使用する場合、つまり、サーバーにC ++ / CLIを使用し、同じ管理対象の.NETツールを使用して作業する場合に簡単です。データ送信あり。
他のヒント
それは本当に大きな問題ではありません-良いプロトコルを考え出す限り。ワイヤ上のビットは、それらを解釈するプログラムの作成にどの言語が使用されたかを気にしません。
プロトコルでは、誰が何をいつ何をすべきかを明確に理解する必要があります。 そして何を期待します。
たとえば、エコーサーバーとそのクライアントはそれを期待するかもしれません
- クライアントが最初に話す
- クライアントの入力の終わりを示すよく理解された識別子があります
- クライアントはサーバーが応答するのを待ってから再度話します
- サーバーの出力の終わりを示す、よく理解された識別子があります。
など。プロトコルの非互換性のため、入力終了識別子を使用する代わりにメッセージの前にメッセージ長を送信した別のクライアントは、元のサーバーでは動作しません。
プロトコルは柔軟な場合がありますが、プロトコル自体でその柔軟性を考慮する必要があります。
誰もが言ったように、チャットプロトコルが適切に設計されていれば、これはまったく問題になりません。 BinaryFormatterを使用してCLRオブジェクトを直接ワイヤにシリアル化するなどのハックを使用している場合にのみ問題が発生します...
許可されている範囲で、既存のプロトコル(IRCなど)やライブラリを使用することをお勧めします。
すべてが1つのWindowsドメインで実行されている場合、DCOMを検討できます。それ以外の場合は、Webサービス(C ++用のSOAPツールキット)または多分RESTを使用します。
チャットプログラムの場合は、チャットプロトコルを使用してみてください。
XMPP を調べて、それを使用できるかどうか、またはバージョンを削減してください。他の人が考え出したものから始めることは決して悪い考えではありません。少なくとも、あなたはそれについて好きではないものを見ることができます。 :)