Bir ActiveX yazdım. indy udpserver kullanıyorum içinde. Port açma ve kapatma kodları aşağıdaki gibidir.
uygulama bir portu açıp, kullanıp kapatılınca sorunsuz. Ama birden fazla yaratıldığında sorun oluyor.
Bu ocx i .nette farklı sınıflar yaratıp çağırdğımda, açtığım portları dinleyip işlem yapabiliyorum ama portu kapat dediğimde enson açılan port kapatılıyor ve diğer portları kapatamıyorum. uygulamayı kapatmadan da bu portlar açık kalıyor. uygylamayı kapatırkende hata alıyorum tabii...
Bende OpenProt "if assigned(MyUdp) then showmessage("already created !")" diye bir code ekledim ve her yarattığımda bu mesajı alıyorum. Yani türettiğimi zannettiğim ocx aslında her seferinde MyUdp yi kullanıyor.
Aslında activex i bu haliyle kullanıp, kapatma fonsiyonundan bir parametreyle sadece parametredeki portu kapatabisem sorunum çözülecek ama yapamadım.
bu konuda yardımınızı ricaediyorum.
Kod: Tümünü seç
var
MyUDP:TIdUDPServer;
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function TaX.OpenProt(PORT: Integer): MyErr;
begin
Result:=ProcessDone;
try
MyUDP:=TIdUDPServer.Create(nil);
MyUDP.SetSubComponent(TRUE);
MyUDP.OnUDPRead:=OnReceive;
MyUDP.DefaultPort:= Port;
MyUDP.Binding.Port:= Port;
MyUDP.ThreadedEvent:=True;
MyUDP.Active:=true;
except
on E : Exception do
begin
result:=ConnectionError;
exit;
end;
end;
end;
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function TaX.CloseSys: MyErr;
begin
Result:=ProcessDone;
try
MyUDP.Destroy ;
except end;
end;