Moin, moin,
ich möchte zwischen dem Server und dem Client Daten austauschen. Dazu benutze ich TServerSocket und TClientSocket:
- Client sendet meine eigene Datenstruktur TNetRequest
- Server liest diese aus und antwortet mit der Struktur TNetAnswer
- wenn der Client dann die Antwort hat, schickt er die nächste Anfrage
Client-Seite - On Read
Delphi-Quellcode:
procedure TFormMain.NetzwerkClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var Answer:TNetAnswer;
begin
Socket.ReceiveBuf(Answer,sizeof(Answer));
// die eigentlichen Daten auswerten
case Answer.RequestId
of
0 :
begin
// TBD Antwort weiter verarbeiten
Inc(Request.RequestId);
// Request ist im Client global angelegt
Socket.SendBuf(Request,sizeof(Request));
end;
1 :
begin
// TBD Antwort weiter verarbeiten
Dec(Request.RequestId);
// Request ist im Client global angelegt
Socket.SendBuf(Request,sizeof(Request));
end;
end;
Server-Seite - OnClientWrite
Delphi-Quellcode:
procedure TFormMain.NetzwerkServerClientWrite(Sender: TObject;
Socket: TCustomWinSocket);
var Request:TNetRequest;
Answer:TNetAnswer;
begin
Socket.ReceiveBuf(Request,sizeof(Request));
ExecNetzwerkRequest(Request,Answer); // Antwort aufbereiten
Socket.SendBuf(Answer,sizeof(Answer));
end;
Mein Problem: die erste Anfrage kommt beim Server an und wird auch beantwortet. Per Debug habe ich auch festgestellt, dass der Client die Antwort vom Server erhält - NUR kommt beim Server die zweite Anfrage nicht mehr an ...
Hat da irgendjemand eine Idee zu? Die Suche hat mir auch nicht wirklich weitergeholfen (was auch daran liegen könnte, dass ich die komplizierteren Threads zu diesem Thema einfach nicht verstanden habe
)
easywk