void __fastcall TForm1::ssClientRead(TObject *Sender,
     TCustomWinSocket *Socket)
{
      String s= Socket->ReceiveText();
      Memo1->Lines->Append(s);
      String c= s.SubString(1,1);
      String pom;
      if(c=="a") {
       pom=wiadbuf.ilejest(); Socket->SendText("a"+pom);
   //    Memo1->Lines->Append(pom);
      }

      if(c=="d") {
       pom=s.SubString(2,s.Length());
       int w=pom.ToIntDef(wiadbuf.ilejest());
   //      Memo1->Lines->Append(w);
   //      Memo1->Lines->Append(wiadbuf.ilejest());
       while(w!=wiadbuf.ilejest()){
        String h=wiadbuf.zwroc(w);
        Socket->SendText("d"+h);
        w++;
       }
        }
       if(c=="j"){
        pom=s.SubString(2,s.Length());
        wiadbuf.dodaj(pom);
        Memo1->Lines->Append(pom);
       }

}

problem jest taki że jak ktoś sie do mnie podłącza to serwer dostaje zwisa (tylko czasami)..
troche jak działa: kilka razy na sekunde dostakje wiadomość "d"+liczba i jesli sa jakies noweewiadomosci to je oddaje.. widomość: "j"+tresc to dodaje do wiadbuf a to na początku ("a") to w sumie nieważne.. aha jak ja sie z kompa podłączam na którym serwer działa to wszystko gra b.dobrze i to nawet w kilkunastu okienkach.. coś gdzieś przeczytałem że wypadałoby sklonować jakiegoś socketa ale teraz nie mam pojęcia jak, co i gdzie :/

dodatkowo jeszcze powiem że serwer ma tendencje do łączenia stringów np wychodzi mi "d6d6" zamiast dwóch d6 z tym ze jedno przy następnym wywołaniu funkcji.. co to powoduje??