0

私は小さなクライアント/サーバー プロジェクトに取り組んでいましたが、ICS を使用することに切り替えようと決めました。残念ながら、私は ICS の経験がなく、一般的なソケットの経験もほとんどありません。私のサーバーは、クライアントから文字列を受信し、処理できる必要があります。私のサーバーは、クライアントから画像を受信できる必要もあります。

私は初心者なので、以前はこれを実現するために 2 つのソケットを使用していました。文字列用の TServerSocket と、画像用の Indy tcp サーバー コンポーネントです。ICS に切り替えたので、2 つの機能を 1 つのソケットに統合したいと思います。サーバーが処理する必要がある送信の種類ごとに異なるソケットを必要とするのは普通ではないと思うからです。

私は 2 つの大きなハードルを経験しています。

  • 同じイベント ハンドラーから複数の種類のデータを受け取るという問題に対処する最善の方法がわかりません。OnDataAvailable ハンドラーのデフォルトを文字列の読み取りに設定し、次にクライアントがサーバーに次に画像を送信することを示す文字列を送信するようにすることができると想像します (この場合、サーバーは画像の読み取りに切り替わります)。 )。しかし、それについてもっと効率的な方法はありますか?サーバーが一度に多くのクライアントを処理できるようにしたいのですが、サーバーをできるだけ高速で安定させたいのですが、このような状況を処理するための「推奨される」方法はありますか?
  • ICSを使用して画像を送受信する方法が実際にはわかりません。Indy では、クライアントに画像を TMemoryStream に保存させてから、「SendStream」および「ReceiveStream」関数を使用していましたが、ICS にはストリームを処理する関数がありません (私が知る限り)。「送信」と「受信」を使用する必要があると思いますが、それを行うための最良の方法が確実にわかりません。TJpegImage オブジェクトへの参照をバッファとしてそのまま使用できますか?それとも、ストリームに保存してから、送信する前にストリームをバイト配列に読み込む必要がありますか? また、ノンブロッキング ソケットではファイルの送受信が少しトリッキーであることを理解しています。

誰かが提案やサンプル コードを提供できる場合は、助けていただければ幸いです。

質問が長くなってしまったことをお詫び申し上げます。また、誰かに解決策を教えてほしいとお願いしているように見える場合は、お詫び申し上げます。私の質問のすべてに答えてくれる ICS のデモを見つけることができたわけではありません。また、Google は私の友人ではないようです。できる限り効率的なソリューションを実装したいので、私よりもこれについてよく知っている人々からのフィードバックを得ることなく、ハッキングを開始するのは気が進まない. 前もって感謝します。

4

0 に答える 0