私はたくさんの質問をしています...しかし、新しいDelphi開発者として、私はこれらすべての質問に落ち続けています:)
これは、indy 10 を使用した TCP 通信を扱います。通信を効率化するために、クライアント操作要求を 1 バイトとしてコーディングします (ほとんどのシナリオでは、もちろん他のデータ バイトが続きますが、この場合は 1 バイトのみです)。問題はそれです
var Bytes : TBytes;
...
SetLength (Bytes, 1);
Bytes [0] := OpCode;
FConnection.IOHandler.Write (Bytes, 1);
ErrorCode := Connection.IOHandler.ReadByte;
そのバイトをすぐには送信しません (少なくともサーバーの実行ハンドラは呼び出されません)。たとえば、「1」を「9」に変更すると、すべて正常に動作します。Indy が送信バイトをバッファリングすると想定し、書き込みバッファリングを無効にしようとしました
FConnection.IOHandler.WriteBufferClose;
しかし、それは役に立ちませんでした。1 バイトを送信して、それがすぐに送信されるようにするにはどうすればよいですか? そして - ここにもう 1 つ小さな質問を追加します - indy を使用して整数を送信する最良の方法は何ですか? 残念ながら、 TIdTCPServer の IOHandler に WriteInteger のような関数が見つかりません...そして
WriteLn (IntToStr (SomeIntVal))
私にはあまり効率的ではないようです。複数の書き込みコマンドを続けて使用するか、バイト配列にまとめて一度送信するかに違いはありますか?
回答ありがとうございます。
編集: 読み取りと書き込みの手順に関して大きな変更があるように見えるので、Indy 10 を使用しているというヒントを追加しました。