- Indy 10'dan daha eski bir sürümü kullandığın görülüyor ama bir şekilde cevap almak istiyorsan soru sorarken özellikle indy konusunda hangi sürümü kullandığını bildirmen gerekir.
- Çünkü indy 8, 9, 10 her seferinde kodlama sistemi değişmekte, gelişmekte. Şimdi cevap yazacak kişi kod gönderecek sen de çalışmıyor diyeceksin. Gönderen kişi daha iyi niyetli ise senin için diğer indy sürümüne göre araştırma yapmak durumunda kalacak.
- Şunu ifade etmeme izin verin, TCP protokolü dosya transfer etmez, byte byte veri akışını ( streaming ) yapabilir. Siz bir dosya transfer etmiş olmuyorsunuz, tren gibi ard arda dizilmiş byte'ları gönderiyorsunuz.
- Buna anlam kazandırmak için kuracağın protokol ile iki makinedeki projeni anlaştırman, birini beklemeye alıp, diğerinin ne göndereceğini ve aldığında ne yapacağını bildirecek ve anlayacak mekanizma kurman lazım.
- Protokol şu şekilde olabilir.
1. Client -> Server'e der ki, xxx dosyasını göndericem. Müsade et..
2. Server -> Client'e der ki, xxx dosyasını gönder bekliyor olucam....
3. Client -> Server'e Dosyayı STREAM olarak yollar.
4. Server ise gelen stream bitince, daha önce bildirilen xxx ismini bu streami dosyalaştırıp kaydeder.
- Bunu herhangi bir kontrolle yapabilirsin. Mesela bir TButton ile bir mesaj gönderebilirsin.
- Server'in OnExecute olayında tetik mekanizmaları bulunur. Gelen Text içeriği şu ise şu hazırlığı yap dersin. Gerekli Boolean tetik mekanizman hazır beklemeye başlar.
- Bir sonraki OnExecute olayında bu Boolean tetik mekanizması TEXT mesajı yerine doysa beklemeye başlar vs. bir time out veya kukla dosya yollayarak işlemi iptal edebilirsin.
- Ben kendi projelerimde farklı bir port ile sadece mesajlaşma işini yürütüyorum. Belli bir port ile sadece dosya transfer için kullanıyorum. Karar senin.
- Başarılar...
