1

C++ と Winsock を使用して、サーバー アプリケーションとクライアント アプリケーションの両方を作成しました。サーバーに接続すると、クライアントはアニメーション シーケンスを表示します。サーバー マシンは複数のクライアント接続を処理でき、接続されているクライアントの総数をカウントします。

現在、クライアントのアニメーション シーケンスは、クライアントが接続するとすぐに開始されます。私がしたいのは、2つのクライアントがサーバーに接続したときに、サーバーがクライアント1にメッセージを送信してRender()関数(クライアントにある)を呼び出し、後で別のメッセージをに送信することです。同じ Render() 関数を呼び出すクライアント 2。

これを達成するための最良の方法についての助けを探しているだけです。

ありがとう

4

1 に答える 1

1

関数は単一のプロセス空間内にあり、ソケット接続を介して(簡単に)送信できないため、関数呼び出しを(直接的な意味で)送信することはできません。

あなたができることは、クライアントが行動して目的の関数を呼び出すメッセージを送信することです。

使用しているプロトコルに応じて、これはサーバーが各クライアントの TCP 接続に 1 バイト (たとえば、レンダリング用の「R」など) を送信するのと同じくらい簡単な場合があり、クライアント コードは、それが発生したときに Render() を呼び出すことを認識します。そのバイトを受け取ります。もちろん、より複雑なプロトコルは、同じ情報をより精巧にエンコードする可能性があります。

インタープリター言語 (Java や Python など) では、Java .class ファイルや Python ソース テキストなどの形式で、ソケット接続を介して実際のコードを送信することができます。攻撃者はこのメカニズムを悪用して、マルウェアをクライアントに送信し、クライアントに実行させる可能性があります。

于 2013-04-18T18:49:00.000 に答える