Gniazdka - co mozna na to poradzic?

0

Mam problem. Pisze program z uzyciem standardowych gniazd w Delphi 7. Ale zdarza mi sie ze przy zbyt szybkim natloku pakietów ten komponent sie lekko przywiesza. Konkretnie to serwer przestaje reagowac na to co dostaje od Clienta a gdy sie rozlacze i polacze na nowo to client jest widoczny jako drugi z <ort>kolei </ort>co jest niedorzeczne. Po prostu caly kontakt z pierwszym polaczeniem sie urywa.

Nawet nie zostaje uruchomiona procedura OnDissconnect gdy zerwie polaczenie.

I takie pytanie. Co moze byc przyczyna? Chcialbym to naprawic, czy mozna jakos "odwiesic" ten komponent programowo? Czy moze polecacie jakis inny komponent na tyle podobny zebym mogl go zaimplementowac w moj program bez wiekszych komplikacji?

0

jakiś kod :>

0

hmmm mam wkleic kod ogromnego programu? Napisalem co sie dzieje. Zapycha sie caly komponent TServerSocket. Nie reaguje na zdarzenia typu OnDissconnect i kod tu raczej nikomu nie pomoze bo dzieje sie to przypadkowo kiedy odbiera pakiety a nie zdarzy jeszcze obrobic poprzednich.

0

nie cały tylko jak tworzysz nowe połączenie i jak odbierasz pakiet (co z nim potem robisz to Twoja sprawa)

0
procedure TForm1.ServerClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var
  receive:string;
begin
  receive:=socket.ReceiveText;
  if pos('%%%', receive)<>0 then GetParam(copy(receive,5, length(receive)-4));
    case strtoint(copy(receive,1,4)) of
      1: procedura1;
      2: procedura2;
      3: procedura3
  end;

w tych pakietach sa zakodowane krotkie polecenia, wychwytuje to GETPARAM. I uruchamia odpowiednia procedure. Ale kiedy zbyt czesto je dostaje to wiesa sie caly komponent mimo ze porobilem wszedzie zabezpieczenia typu TRY EXCEPT i czyszczenie bufora gniazda.</delphi>

1 użytkowników online, w tym zalogowanych: 0, gości: 1