Lazarus 1.8.2 (2017.12.06.)
Letöltés

file LNET TCPserver - (C#) TCP kliens. C# felé nem jön adat

  • robotech
  • robotech profilkép
  • Haladó fórumozó
  • Haladó fórumozó
  • Hozzászólások: 28
  • Köszönetek: 0

robotech válaszolt a témára: LNET TCPserver - (C#) TCP kliens. C# felé nem jön adat

Megválaszolom a kérdést, hogy a topic egészben legyen:

A Session-t úgy lehet lezárni, hogy nem az LTCP komponens eljárásain keresztűl, hanem a session-re vonatkozó TLsocket-nek van lezáró eljárása.

Tehát ha az adott Session-t szeretném úgy lezárni, hogy a Host továbbra is Listening-en maradjon, akkor a

connection.Accept eljárásban megkapott aSocket változót kell lezárnom:

aSocket.Disconnect();
#2258
  • robotech
  • robotech profilkép
  • Haladó fórumozó
  • Haladó fórumozó
  • Hozzászólások: 28
  • Köszönetek: 0

robotech létrehozta a témát: LNET TCPserver - (C#) TCP kliens. C# felé nem jön adat

Ü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!
#2257