PDA

View Full Version : یه مشکل در indy



mehdi_mohamadi
چهارشنبه 11 بهمن 1385, 19:27 عصر
من از طریق راهنمایی های بچه های سایت یه برنامه client/server برای انتقال فایل از سرور به کلاینتها ایجاد کردم. حالا می خوام که این عمل را برعکس انجام بدم یعنی فایلها رو از کلاینت ها روی درایو مورد نظر در سرور ذخیره کنم.
پیشنهاد دوستان در این مورد چیه؟چه کاری انجام بدم بهتره؟

Touska
چهارشنبه 11 بهمن 1385, 20:19 عصر
نمونه کار خودم :


procedure TMain1.SendingFile(User,Filename : String);
Var
I : Integer;
Hand : PClient; //TYpe of my thread record
Transfer : TDataTransform;
Temp : TMemoryStream;
Mem : TFileStream;
begin
Try
With QClients.LockList Do //my theard list
Begin
For I := 0 To Count - 1 Do
Begin
Hand := Items[i];
IF Hand.Name = Trim(User) Then
Begin
Filename := Trim(Data1.DicTable1Path.AsString)+'\'+Trim(Filena me);
End;
Mem := TFileStream.Create(Filename,fmOpenRead);
Mem.Position := 0;
IF Mem.Size >= 5242880 Then //Check size of file > 5 MB
Begin
Mem.Free;
Exit;
End;

Transfer.Command := '_SENDFILE';
Transfer.UserName := Trim(Setting1.suiEdit3.Text);
Transfer.Recieve := Trim(User);

Transfer.Text := ExtractFileName(Filename);

TIdPeerThread(Hand.Thread).Connection.WriteBuffer( Transfer,SizeOf(
Transfer),True);

TIdPeerThread(Hand.Thread).Connection.WriteInteger (Mem.Size);
TIdPeerThread(Hand.Thread).Connection.WriteStream( Mem);

Mem.Free;
Break;
End;
End;
End;
Finally
QClients.UnlockList;
End;
end;

mehdi_mohamadi
چهارشنبه 11 بهمن 1385, 20:22 عصر
ممکنه سورس برنامه رو اینجا قرار بدی؟

Touska
چهارشنبه 11 بهمن 1385, 20:23 عصر
یک نمونه تا فردا برات UP می کنم با Demo

موفق باشید :)

mehdi_mohamadi
چهارشنبه 11 بهمن 1385, 20:27 عصر
:بوس:
متشکرم

Touska
پنج شنبه 12 بهمن 1385, 13:09 عصر
اینم Demo برای ارسال فایل بین Server و Client :