serversocket - clientsocket dosya transferi

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
osman_simsek
Üye
Mesajlar: 69
Kayıt: 17 Haz 2003 12:14
Konum: Alanya
İletişim:

serversocket - clientsocket dosya transferi

Mesaj gönderen osman_simsek »

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
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: serversocket - clientsocket dosya transferi

Mesaj gönderen conari »

Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
osman_simsek
Üye
Mesajlar: 69
Kayıt: 17 Haz 2003 12:14
Konum: Alanya
İletişim:

Re: serversocket - clientsocket dosya transferi

Mesaj gönderen osman_simsek »

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.
...[ at, avrat, delphi ]...
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: serversocket - clientsocket dosya transferi

Mesaj gönderen conari »

Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
osman_simsek
Üye
Mesajlar: 69
Kayıt: 17 Haz 2003 12:14
Konum: Alanya
İletişim:

Re: serversocket - clientsocket dosya transferi

Mesaj gönderen osman_simsek »

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;
...[ at, avrat, delphi ]...
Cevapla