Üdv!
Pár napja hulladék időmben keresek a neten, de használható exact megoldást nem találtam:
Lazarusban írtam egy egyszerű programot, ami többek között 1-nél egész biztosan több programnak kéne tudnia küldenie egy súlyadatot (egy soros mérlegből). Ezért gondoltam, hogy indítok egy LNET TCP servert, aztán aki csatklakozik lekérheti az értéket valami parancssal (GET WEIGHT).
A problémám az, hogy a ha TCP kliens is lazarusban íródott ,akkor a válasz visszajön, ha más programmal, C#, akkor a program csak - vár-vár az adat megérkezésére, és valami acknowledge szerű jelre...
Ha bezárom a TCP server kapcsolatot, akkor kapja csak meg a másik program az adatot...
Tehát úgy néz ki, hogy valamit kéne programból csinálnom, de a komponens tulajdonságait már átnéztem, de a .disconnect-en kívűl nem találtam olyan eljárást/függvényt, aminek a meghívásával megérkezne a másik programba az adat.
Tehát a kód valahogy így néz ki:
procedure TFormMain.LTCPComponentReceive(aSocket: TLSocket);
var
s: string;
begin
if aSocket.GetMessage(s) > 0 then begin
if pos(s,'GET WEIGHT')>=0 then begin
Fnet.SendMessage('110kg');
Fnet.Disconnect;
end;
end;
end;
Ha nem teszem oda az Fnet.disconnect-et, akkor nem érkezik meg az adat.
kérdésem az lenne, hogy mit kellene csinálni, hogy a TCP szerver által küldött válasz megérkezettnek minősüljön anélkül, hogy lekapcsoljam a szervert (majd újra bekapcsoljam...)
Köszönöm a válaszokat előre is!