Merhabalar öncelikle,
Şirket içinde kullanılmak üzere bir yazılım hazırlıyorum. Yazılım bir bölümünde, gelen faturaları kaydetme bölümü söz konusu. Faturalar; bilgileri haricinde taranmış haliyle, dosya(jpg,pdf vs.) olarak da kaydedilmeli. ServerSocket ve ClientSocket nesneleri kullanarak birbirleriyle haberleşiyorlar. Ancak sıkıntı şudur ki; bu nesnelerle bir client tan servera, dosya transferini yapamadım. Forumda yaptığım araştırmalarda sadece Indy nesnesi ile ilgili örnekler bulabildim. Delphi Help'ten baktığım kadarıyla da ben çözemedim.
Aslında dosyaları, ağda paylaşıma açtığım bir klasöre kopyalamayı düşündüm ama bu kez de WAN' dan gelen bir kullanıcı dosya kaydedemeyecek ve göremeyecek. Bir FTP Alanına upload etmeyi düşündüm, bu kez de dosyaların sayısı çok fazla (ilk 3 ayda muhtemelen bir kaç bin) olabileceği için web alanı ve trafik maliyeti söz konusu olacak.
Serversocket ve ClientSocket ile ilgili dosya transfer konusunda yardımlarınızı bekliyorum.
Delphi 6 kullanıyorum.
Şimdiden teşekkürler
serversocket - clientsocket dosya transferi
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
-
- Üye
- Mesajlar: 69
- Kayıt: 17 Haz 2003 12:14
- Konum: Alanya
- İletişim:
Re: serversocket - clientsocket dosya transferi
INDY ile ilgili Şu linklere bir bak.
http://www.experts-exchange.com/Program ... 05415.html
http://www.experts-exchange.com/Program ... 01412.html
http://www.experts-exchange.com/Program ... 05415.html
http://www.experts-exchange.com/Program ... 01412.html
Bir kelimenin anlamını öğretsen bile yeter..



-
- Üye
- Mesajlar: 69
- Kayıt: 17 Haz 2003 12:14
- Konum: Alanya
- İletişim:
Re: serversocket - clientsocket dosya transferi
Aslında Indy'den ziyade, serversocket ile nasıl çözülür ?
Indy kullanmadım daha önce, proje de şu haliyle değişik bir componentle devam etmeye elverişli olmayabilir.%30 tamamlanmış durumda.
Indy kullanmadım daha önce, proje de şu haliyle değişik bir componentle devam etmeye elverişli olmayabilir.%30 tamamlanmış durumda.
...[ at, avrat, delphi ]...
Re: serversocket - clientsocket dosya transferi
Şurada hazır program mevcut sanırım.
http://www.opensc.ws/delphi-help/5555-s ... ocket.html
burada bazı kodlar var.
http://www.experts-exchange.com/Program ... 26311.html
http://www.opensc.ws/delphi-help/5555-s ... ocket.html
burada bazı kodlar var.
http://www.experts-exchange.com/Program ... 26311.html
Bir kelimenin anlamını öğretsen bile yeter..



-
- Üye
- Mesajlar: 69
- Kayıt: 17 Haz 2003 12:14
- Konum: Alanya
- İletişim:
Re: serversocket - clientsocket dosya transferi
Sorunu Şu Şekilde Çözdüm, benden sonra ihtiyacı olan arkadaşlar için yardımcı olabilir.
clientsocket1 den serversocket1' e dosya transferi
Client Tarafı
private
ms:tmemorystream;
procedure TForm2.BitBtn3Click(Sender: TObject);
begin
ms:= TMemoryStream.Create;
ms.LoadFromFile(opendialog1.FileName);
try
ms.Position:= 0;
form1.ClientSocket2.Socket.SendText(IntToStr(ms.Size) + #0);
form1.ClientSocket2.Socket.SendStream(ms);
except
ms.Free;
end;
end;
Server Tarafı
private
ms: TMemoryStream;
Reciving: boolean;
DataSize: integer;
Data: TMemoryStream;
procedure TForm1.ServerSocket2ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
s, sl: string;
begin
s:= Socket.ReceiveText;
if not Reciving then
begin
SetLength(sl, StrLen(PChar(s))+1);
StrLCopy(@sl[1], PChar(s), Length(sl)-1);
DataSize:= StrToInt(sl);
Data:= TMemoryStream.Create;
Delete(s, 1, Length(sl));
Reciving:= true;
end;
try
Data.Write(s[1], length(s));
if Data.Size = DataSize then
begin
Data.Position:= 0;
Data.SaveToFile('deneme.txt');
Data.Free;
Reciving:= false;
end;
except
Data.Free;
end;
end;
clientsocket1 den serversocket1' e dosya transferi
Client Tarafı
private
ms:tmemorystream;
procedure TForm2.BitBtn3Click(Sender: TObject);
begin
ms:= TMemoryStream.Create;
ms.LoadFromFile(opendialog1.FileName);
try
ms.Position:= 0;
form1.ClientSocket2.Socket.SendText(IntToStr(ms.Size) + #0);
form1.ClientSocket2.Socket.SendStream(ms);
except
ms.Free;
end;
end;
Server Tarafı
private
ms: TMemoryStream;
Reciving: boolean;
DataSize: integer;
Data: TMemoryStream;
procedure TForm1.ServerSocket2ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
s, sl: string;
begin
s:= Socket.ReceiveText;
if not Reciving then
begin
SetLength(sl, StrLen(PChar(s))+1);
StrLCopy(@sl[1], PChar(s), Length(sl)-1);
DataSize:= StrToInt(sl);
Data:= TMemoryStream.Create;
Delete(s, 1, Length(sl));
Reciving:= true;
end;
try
Data.Write(s[1], length(s));
if Data.Size = DataSize then
begin
Data.Position:= 0;
Data.SaveToFile('deneme.txt');
Data.Free;
Reciving:= false;
end;
except
Data.Free;
end;
end;
...[ at, avrat, delphi ]...