Zitat von
wicht:
Delphi-Quellcode:
procedure TfrmMain.SendActionData(Action: TActionTypes);
var
M: TActionMessage;
V, DT: Byte;
begin
V := PROT_ACTIONDATA;
M.Action := Byte(Action);
addSocket.Send(@V, SizeOf(Byte));
addSocket.Send(@M, SizeOf(TActionMessage));
end;
2 Mal .Send() könnte unter Umständen zu zwei Netzwerkpaketen führen, die einzeln auf die Reise gehen.
Bei UDP ist es sicher so.
Bei
TCP sorgt das Betriebssystem jetzt nach Einstellung dafür, dass Daten
die kurz hintereinander der WinSock-
API übergeben werden in ein Paket gepackt werden.
Deshalb alles in einem Record enthalten sein:
Delphi-Quellcode:
type
TActionMessage = record
MessageType : Word;
Action : Byte;
...
end;
...
M.MessageType := PROT_ACTIONDATA;
addSocket.Send(@M, SizeOf(TActionMessage)); // nur 1 "Send" nötig