私の現在のクラスでは、基本的なネットワーク ゲームを作成することを計画していますが、C# クライアントを使用して C++ サーバーを作成するタスクを引き受けることにしました。これはおそらく難しい作業だと思いますが、これを実現するためのアドバイスがあればと思いました.
申し訳ありませんが、これ以上の情報はありません。私たちはまだ始まったばかりで、限られた時間内にこれが可能であることを確認したいだけです。
私の現在のクラスでは、基本的なネットワーク ゲームを作成することを計画していますが、C# クライアントを使用して C++ サーバーを作成するタスクを引き受けることにしました。これはおそらく難しい作業だと思いますが、これを実現するためのアドバイスがあればと思いました.
申し訳ありませんが、これ以上の情報はありません。私たちはまだ始まったばかりで、限られた時間内にこれが可能であることを確認したいだけです。
これはうまくいきます。C# と C++ は両方とも、さまざまな種類の TCP および UDP ネットワーク接続をサポートしています。クライアントまたはサーバーのどちらでも問題なく機能します。
監視する必要がある主な問題は、データの送信方法を決定することと、ワイヤを通過するすべてのパケットが同じ方法でシリアル化/逆シリアル化されることを確認することです。
両側で同じ言語 (または少なくともライブラリ) を使用する場合、これはより簡単になります。つまり、サーバーに C++/CLI を使用し、データ転送を操作するために同じマネージド .NET ツールを使用する場合です。 .
良いプロトコルを考え出す限り、それは大きな問題ではありません。通信中のビットは、それらを解釈するプログラムの作成に使用された言語を気にしません。
プロトコルとは、誰がいつ何をすべきか、何を言うべきか、何を期待するべきかを明確に理解する必要があることを意味します。
たとえば、エコー サーバーとそのクライアントは、
等々。入力識別子の終わりを使用する代わりに、メッセージの前にメッセージの長さを送信した別のクライアントは、プロトコルの非互換性のため、元のサーバーでは機能しません。
プロトコルは柔軟にできますが、プロトコル自体でその柔軟性を考慮する必要があります。
誰もが言っているように、チャット プロトコルが適切に設計されていれば、これはまったく問題になりません。BinaryFormatter を使用して CLR オブジェクトをワイヤ上に直接シリアル化するなどのハックを使用している場合にのみ、問題が発生します...
許可されている範囲で、既存のプロトコル (IRC など) やライブラリを使用することをお勧めします。
すべてが 1 つの Windows ドメインで実行されている場合は、DCOM を検討してください。それ以外の場合は、Web サービス (C++ 用の SOAP ツールキット) または REST を使用します。