Remote Client&Server (Çözüldü) Çözüm için bakabilirsiniz

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
Lost Soul
Üye
Mesajlar: 1064
Kayıt: 01 Nis 2007 02:55
Konum: mekan ANKARA toprak ELAZIĞ
İletişim:

Remote Client&Server (Çözüldü) Çözüm için bakabilirsiniz

Mesaj gönderen Lost Soul »

Selamun Aleyküm.

PRoblemi çözdüm diğerlerinizin de kullanabilmesi için örnek bir program yazdım.
viewtopic.php?t=20085







Problem ise aşağıda idi


Hemen hemen hepimiz biliriz ki geleneksel Remote Admin yazılımlar şöyle bir mantıkla çalışır.

Bir server bi client programı olur. Clienti kendi makinemize server i ise bağlanmak istediğimiz makineye kurarız.

Sonra iki saat boyunca karşımızdaki adama ADSL Router dan prot açtırana kadar göbeğimiz çatlar vs. vs.


Ben bu işlemin tam tersini yapacak ( yani serveri kendi makinemiz, client'i ise muhatabımızın makinesi yapacak) böylece adama port açtırmak için tırmalamak yerine. Host kısmına şunu port kısmına bunu yaz bağlanı tıkla diyebileciğimiz ve bir sürü işkenceden kurtulabileceğimiz bir program yazmaya karar verdim.

Ama bu noktada şöyle bir sıkıntım var. (Daha doğrusu bilgi eksikliğim diyelim)


Yıllardır bu tip bişeyle uğraşmadığım için nerdeyse tamamen unutmuşum ve hatırlamak için internette epeyi bi (gece 10 dan dabah 6 ya kadar) arama yaptım.


Ne hikmetse herkes NMSoket, TCPClient&Server vb bileşenler yerine Indy bileşeni kullanmaı tercih etmiş. Ve döküman(:?:) larını da bu şekilde yayınlamışlar.

Gerekçe ise Indy nin diğer bileşenlerdn farklı olarak blocking socket (bir işlem bitmeden diğerine geçmeme) ve bu özelliği ile beraber yazımda kolaylık sağlaması gösterilmiş.

Evet indy bileşeni gerçekten diğer bileşenlerden daha kullanışlı ve basit. Ayrıca araçları da çok güçlü.

Hatta 2006 senesinde IndyFTPClient bileşeni ile FTP Tabanlı Kalite Yönetimi Programı bile yazmıştım. Ve bana bir sürü kolaylık sağlamıştı.


Ancak şöyle bir durum var.
Geleneksel Client&Server uygulaması yaptığımda (Tam olarak olmasa da ) Indy bileşeni belirttiğim işi görüyor olabilir.

Ama dediğim şekilde düşündüğümüzde INDY Server kısmında sıkıntı olmammakla beraber. Indy Client kısmında non-stop özelliği olmadığı için
Çift yönlü veri alışverişi tam bir işkence oluyor.

Internette indy tcpip ya da udp bileşeni ile tek yönlü chat yada çift Yönlü( :!: ) chat ile ilgili bir kaç birbirinin aynısı döküman( :?: ) var.

Delphi 7 ile birlikte gelen Internet Paletindeki TCPClient ve Server bileşenleri ise non-stop özellikli ama o bileşenler hakkında da fazla bi bilgim yok (deneme yanılma ile epeyi bi tırmalama gerekecek))

Arkadaşlar.

Sizden Ricam; Aşağıdaki sorularımdan bir tanesine çözüm bulabilmeniz.

1. Internet Paletindeki TCPServer ve Client Bileşeni ile çift yönlü iletişime dair bir döküman ya da en basitinden de olsa bir kod (karşılıklı chat yapsalar bile yeter benim için. Gerisini ben hallederim) veya sizin bulduğunuzve öncden yapmış olduğunuz basit de olsa bir örnek program. (Çift yönlü iletişim , işlemciyi kasmayacak isterse byte byte göndersin önemli değil :))

2. Ya da bana arkadaş sen yanlış yoldan gidiyorsun. Senin aslında delphi ile gelen şu şu bileşenleri kullanman gerek şeklinde bir tavsiye.

3. Veya (Tercihen FreeWare olmazsa Paralı da olur) 3rd party bir bileşen (ki bileşen bir çok konuya eventlar aracılığı ile hakim olursa gerçekten çok güzel olur)




Yardımlarınız için şimdiden teşekkür ederim.
Kolay Gelsin.
En son Lost Soul tarafından 31 May 2007 07:23 tarihinde düzenlendi, toplamda 2 kere düzenlendi.
Kullanıcı avatarı
c_kral
Üye
Mesajlar: 4
Kayıt: 03 Nis 2007 03:04

Mesaj gönderen c_kral »

a.s
Şimdi üstat burda şöle bi sıkıntı var mecbur karsı tarafa değer göndermen gerekecek burda delphi komponentlerinde client bir server gibi davranıp değer okunablir ama program çok fazla kasılmaya başlıyor ve makinayı donmasına sebeb oluyo ama server componentlerinde öle bi sorun olmuyo. sana bide örnek verebilirim..

server

idtcpserver.defultport:=portno;
idtcpsever.active:=true;
idtcpserver.writeln('msj');

client

idtcpclient.host:='senin ipin';
idtcpclient.port:=portno;
idtcpclient.connect;

timer
var
a:string;
begin
a:=idtcpclient.readln();
end

gibi.. bu şekilde geliştirebilirsin programın kasılmaması için ise orda antifreezze diye bi component var onu kullanabilirsin

inşallah yardımcı olabilmişimdir.

kolay gelsin...
Kullanıcı avatarı
Lost Soul
Üye
Mesajlar: 1064
Kayıt: 01 Nis 2007 02:55
Konum: mekan ANKARA toprak ELAZIĞ
İletişim:

Mesaj gönderen Lost Soul »

Cevabın için teşekkür ederim.
Ancak timer veya sayaçla kontrol sağlıklı bi çözüm değil.
Timerin süresini uzattğımızda veri akışı yavaşlar.
Kısalttığımızda ise tetikleme ile değil kontrol ile çalıştığı için doğal olarka gene randımanlı çalışmayacaktır.

Bunda dolayı eventlar la çalışan bir bileşen istedim :)

Gene de teşekkür ederim. Düşünmen yeter
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2131
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Mesaj gönderen sadettinpolat »

"Sevmek, ne zaman vazgececegini bilmektir." dedi, bana.

---
http://sadettinpolat.blogspot.com/
Kullanıcı avatarı
Lost Soul
Üye
Mesajlar: 1064
Kayıt: 01 Nis 2007 02:55
Konum: mekan ANKARA toprak ELAZIĞ
İletişim:

Mesaj gönderen Lost Soul »

Cevaplarınız için teşekkür ederim.



Faster TCP diye bi bileşen buldum Free.

http://geocities.com/jyrki86/fastertcp.html

istediklerimi fazlası ile karşılıyor.
Resim
Tüm olayları kendisi hallediyor. Bize sadece gerekli kodları yazmak düşüyor.

Help dosyasını okuyorum şu an. Çözdüğüm zaman bileşeni ve örnekleri MAkale bölümünde yayınlayacağım inşallah.
Yardımlarınız için teşekkürler. ;)
Kullanıcı avatarı
Lost Soul
Üye
Mesajlar: 1064
Kayıt: 01 Nis 2007 02:55
Konum: mekan ANKARA toprak ELAZIĞ
İletişim:

Mesaj gönderen Lost Soul »

Component ile ilgili örneği yazdım. aşağıdaki linkten inceleyebilirsiniz ;)

viewtopic.php?t=20085
Cevapla