S.A. arkadaşlar.
Başlıkta belirttiğim gibi bir proje yaptım.
Kullanımı;
IP editine karşı bilgisayarın IP'sini yazın.
iki bilgisayarda da sol tarftan port açın
Açılan portlara diğer bilgisayardan bağlanın.
Örneğin A bilgisayarı port 30'u açsın, B Port 40'ı
B bilgisayarında bağlan editine 30, A'da 40 yazın.
Dosyayı alacak olan bilgisayarda sağ taraftan da bir port açın.
Bu portu, gönderecek olan programa bildirmenize gerek yok, açtığınız anda diğerinin haberi oluyor.
Gerisini halledersiniz zaten...
EDİT: Hatalı bir programmış.
Kullanmayın, sadece kendi kodlarınız için ilk adım olabilir.
Buyrun
İnterner üzerinden dosya kopyalama ...
İnterner üzerinden dosya kopyalama ...
En son ulu coder tarafından 30 May 2006 03:25 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Selam,
Projeye baktım, ama bazı sıkıntılar var.
1. Borland Socket arabirimi kötü olduğu için TServerSocket ve TClientSocket'leri terketti. Bu yüzden daha fazla bunlar üzerinde çalışmak ne kadar anlamlı sorgulanmalı bence.
2. Senin yaptığın şekilde dosya transferi yapılırken çok ciddi sorunlar çıkar. Özellikle 8 KB'den büyük dosyalarda. Çünkü socket arabirimleri çok kötü olduğu için, aslında ne kadar veri gitmesi gerektiğini bilemezsin. Ayrıca dosyanın bitip bitmediğini de bilemezsin. Özellikle internet üzerinde. Adam gibi bir protokol hazırlaman gerekir. Yani önce Client-Server bağlantısı kurulacak. Sonra "x Byte dosya gönderiyorum hazır mısın" diye sorulacak. Karşı taraf da "hazırım, yolla" derse dosya gönderilmeye başlanacak. Karşı taraf gelen bütün bilgileri bir yerde tutacak (en uygunu sanırım MemoryStream olur) ve boyut daha önce kendisine söylenen boyuta ulaştığında, "tamam mevzuu burada sona ermiştir" diyecek. Bu da dikkat edersen çok zahmetli bir iş. Çünkü dosyanın chunlarını da gönderirken aynı zamanda başına daima bir strucy koymak zorunda kalacaksın. Yani veriyi Buffer boyutu kadar parçalaman gerekecek. Anlatırken bile sıkılıyorum, kodlarken ne kadar sıkıcı olduğunu sen düşün artık
Bunun daha kolay bir yöntemi var. Ben hemen sana kodları göndermeyeyim, onun yerine sen TWinSocketStream sınıfını biraz incele. Eğer işin içinden çıkamazsan ya da acele gerekiyorsa nasıl yapılacağı ile ilgili bir kod yazarım. Bunu lütfen terbiyesizlik olarak düşünmeyin, tek amacım ulu coder'in kendisinin araştırarak öğrenmesi. Böylece daha kalıcı olacaktır bilgi.
Kolay gelsin,
Bahadır Alkaç
Projeye baktım, ama bazı sıkıntılar var.
1. Borland Socket arabirimi kötü olduğu için TServerSocket ve TClientSocket'leri terketti. Bu yüzden daha fazla bunlar üzerinde çalışmak ne kadar anlamlı sorgulanmalı bence.
2. Senin yaptığın şekilde dosya transferi yapılırken çok ciddi sorunlar çıkar. Özellikle 8 KB'den büyük dosyalarda. Çünkü socket arabirimleri çok kötü olduğu için, aslında ne kadar veri gitmesi gerektiğini bilemezsin. Ayrıca dosyanın bitip bitmediğini de bilemezsin. Özellikle internet üzerinde. Adam gibi bir protokol hazırlaman gerekir. Yani önce Client-Server bağlantısı kurulacak. Sonra "x Byte dosya gönderiyorum hazır mısın" diye sorulacak. Karşı taraf da "hazırım, yolla" derse dosya gönderilmeye başlanacak. Karşı taraf gelen bütün bilgileri bir yerde tutacak (en uygunu sanırım MemoryStream olur) ve boyut daha önce kendisine söylenen boyuta ulaştığında, "tamam mevzuu burada sona ermiştir" diyecek. Bu da dikkat edersen çok zahmetli bir iş. Çünkü dosyanın chunlarını da gönderirken aynı zamanda başına daima bir strucy koymak zorunda kalacaksın. Yani veriyi Buffer boyutu kadar parçalaman gerekecek. Anlatırken bile sıkılıyorum, kodlarken ne kadar sıkıcı olduğunu sen düşün artık

Bunun daha kolay bir yöntemi var. Ben hemen sana kodları göndermeyeyim, onun yerine sen TWinSocketStream sınıfını biraz incele. Eğer işin içinden çıkamazsan ya da acele gerekiyorsa nasıl yapılacağı ile ilgili bir kod yazarım. Bunu lütfen terbiyesizlik olarak düşünmeyin, tek amacım ulu coder'in kendisinin araştırarak öğrenmesi. Böylece daha kalıcı olacaktır bilgi.
Kolay gelsin,
Bahadır Alkaç