Gniazdka - co mozna na to poradzic?

Odpowiedz Nowy wątek
2006-11-02 00:01
Flash
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>koleji </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?

Pozostało 580 znaków

2006-11-02 09:25
0

jakiś kod :>


- Ciemna druga strona jest.
- Nie marudź Yoda, tylko jedz tego tosta.
Google NIE GRYZIE!
Pomogłem - kliknij

Pozostało 580 znaków

2006-11-02 12:14
Flash
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.

Pozostało 580 znaków

2006-11-02 13:16
0

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


- Ciemna druga strona jest.
- Nie marudź Yoda, tylko jedz tego tosta.
Google NIE GRYZIE!
Pomogłem - kliknij

Pozostało 580 znaków

2006-11-02 13:37
Flash
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>

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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