PDA

View Full Version : درخواست راهنمایی جهت استفاده از FTP



khoshblagh
یک شنبه 04 بهمن 1394, 07:22 صبح
با سلام خدمت دوستان و اساتید محترم
میخواهم از FTP و با Indy نسبت به نقل و انتقال فایل در شبکه داخلی شرکت و اینترنت استفاده نمایم. کد زیر از یک سایت خارجی با تغییرات بکار بردم و خطای زیر گرفته میشود. چرا؟ متشکرم.


procedure TfrmSabtGhabzDaryaft.btn1Click(Sender: TObject);
var
objFTP: TidFTP;
sCaminho: String;
begin
sCaminho := 'C:\Applications\Refah.exe';
System.SysUtils.DeleteFile(sCaminho);
try
objFTP := TIdFTP.Create;
try
objFTP.Host := '999.99.999.9';
objFTP.Username := 'shirani';
objFTP.Password := 'ََAAA_932';
objFTP.IOHandler := IdSSLIOHandlerSocketOpenSSL1.Create(objFTP);
objFTP.UseTLS := utUseExplicitTLS;
try
// objFTP.Port := 990;
objFTP.Passive := True;
objFTP.Connect;
objFTP.ChangeDir('C:/Applications');
objFTP.Get('Refah.exe', sCaminho);
finally
objFTP.Disconnect;
end;
finally
FreeAndNil(objFTP);
end;
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;



138607

hamid-nic
یک شنبه 04 بهمن 1394, 08:47 صبح
به احتمال زیاد مجوز دسترسی به Refah.exe را ندارید . چون معنی این خطا مربوط به عدم توانایی در باز کردن فایله .

khoshblagh
یک شنبه 04 بهمن 1394, 16:29 عصر
به احتمال زیاد مجوز دسترسی به Refah.exe را ندارید . چون معنی این خطا مربوط به عدم توانایی در باز کردن فایله .
با تشکر از پاسختان
مشکل مربوط به کانکت شدن میباشد. (کد قرمز رنگ).

hamid-nic
دوشنبه 05 بهمن 1394, 08:20 صبح
با تشکر از پاسختان
مشکل مربوط به کانکت شدن میباشد. (کد قرمز رنگ).

منظورتون اینه objFTP.Connect ؟
الان درست شده ؟

khoshblagh
دوشنبه 05 بهمن 1394, 21:03 عصر
با سلام .
بله منظورم objFTP.Connect میباشد. و مشکل همچنان وجود دارد. و خطای 105 مانع اجرای برنامه میشود.:گریه:

hamid-nic
سه شنبه 06 بهمن 1394, 08:23 صبح
در حالت عادی بدون استفاده از این کد مثلا با استفاده از برنامه های Filezilla یا CuteFtp می تونید با ftp server ارتباط برقرار کنید ؟

ابوالفضل عباسی
چهارشنبه 07 بهمن 1394, 11:25 صبح
سلام
کد شما مشکل دستوری نداره ولی از کد من هم استفاده کن ببین میشه یا نه؟

var strDirectory: string;
begin
FDownload:=TIdFTP.Create(nil);
FDownload.Passive:=False;
FDownload.host :='192.168.1.2';
FDownload.Passive := false;
FDownload.Username := EUser.Text;
FDownload.Password := EPass.Text;
FDownload.Connect;
if FDownload.Connected then
LSend.text :='Server Connected'
else
LSend.text := 'Not Connect Check Network';
try
FDownload.ConnectTimeout := 1000;
FDownload.BeginWork(wmRead);
FDownload.ChangeDir('');
strDirectory := C:\;
if not DirectoryExists(strDirectory) then
CreateDir(strDirectory);
FDownload.Get('123.db', strDirectory + '/' + '123.db', True, false);
FDownload.Disconnect();
except
on e: exception do
showMessage(e.message);
end;
بعضی از قسمت هاش چون Lsend اضافی هستش.


درضمن در event کامپوننت ftp بخش work این کد رو هم بگذار.

application.ProcessMessages;

khoshblagh
جمعه 09 بهمن 1394, 19:24 عصر
من با IPValid و یوزر و پسورد براحتی در منزل به سرور شرکت وصل میشوم. ظاهرا مشکل باید از سمت سرور باشد. آیا در سمت سرور کار خاصی انجام داد؟
ضمنا کد جناب آقای عباسی این خطا نمایش داده میشود.
138733

khoshblagh
دوشنبه 19 بهمن 1394, 17:19 عصر
با سلام خدمت دوستان
در شبکه داخلی (لوکال) خطای Socket error =#10061را میده. البته فایر وال غیر فعال است. ظاهرا باید سوکت 21 را باز نمود.درست است؟
در این صورت این سوکت از سمت سرور و یا از سمت کلاینت و یا هر دو باید بررسی شود. آسانترین راه تست باز بودن آنها چگونه است؟ متشکرم.

hamid-nic
سه شنبه 20 بهمن 1394, 08:29 صبح
با سلام خدمت دوستان
در شبکه داخلی (لوکال) خطای Socket error =#10061را میده. البته فایر وال غیر فعال است. ظاهرا باید سوکت 21 را باز نمود.درست است؟
در این صورت این سوکت از سمت سرور و یا از سمت کلاینت و یا هر دو باید بررسی شود. آسانترین راه تست باز بودن آنها چگونه است؟ متشکرم.

با این لینک (https://pentest-tools.com/network-vulnerability-scanning/tcp-port-scanner-online-nmap) آی پی ولیدتون را اسکن کنید ببینید چه پورت هایی بازه .

khoshblagh
سه شنبه 20 بهمن 1394, 11:37 صبح
با سلام خدمت دوست گرامی
با لینک مورد نظر پورتهای زیر باز میباشد.
PORT STATE SERVICE
80/tcp open http
110/tcp open pop3
119/tcp open nntp
443/tcp open https
3389/tcp open ms-wbt-server
49152/tcp open unknown
49154/tcp open unknown
49155/tcp open unknown

با این لینک (https://pentest-tools.com/network-vulnerability-scanning/tcp-port-scanner-online-nmap) آی پی ولیدتون را اسکن کنید ببینید چه پورت هایی بازه .

hamid-nic
سه شنبه 20 بهمن 1394, 13:01 عصر
خوب دوست عزیز پورت 21 مربوط به ftp که با توجه به نتیجه اسکن که گذاشتید (اگر قبلا تغییرش نداده باشید) این پورت باز نیست .
اون پورت های ناشناخته 49152 و 49154 و 49155 را هم مسدود کنید .
کلا پورت هایی را که استفاده نمی کنید ببندید .

ابوالفضل عباسی
چهارشنبه 21 بهمن 1394, 09:36 صبح
به نظرم مشکل از پورت نیست.
چون خودم یک برنامه ftp همون کدی که گذاشتم استفاده میکنم.و از طریق اینترنت با ip static ها درحال تبادل هستم و هیچ پورتی رو نه بسته ام و نه باز کرده ام.(البته پورت های ناشناخته باز زیادی دارم که انتی ویروس بطور اتومات اون هارو block کرده.)
بنظرم وقتی پیغام socket میدهد:2 معنی از نظر بنده میدهد:
1-فایروال انتی ویروس اجازه کار رو به Ftp تون نمی ده و باید disable بشه.
2-سروری که قراره فایل بفرسته درست کارنمی کنه(یعنی فرمان هایی که برای دریافت اطلاعات نوشته اید ایرادی دارد(که به احتمال زیاد از کد نویسی نیست).


حال باید بررسی کنید ممکنه یکی از این 2 مورد باعث بشه فایل دریافت نشه یانه

khoshblagh
چهارشنبه 21 بهمن 1394, 21:28 عصر
خوب دوست عزیز پورت 21 مربوط به ftp که با توجه به نتیجه اسکن که گذاشتید (اگر قبلا تغییرش نداده باشید) این پورت باز نیست .
اون پورت های ناشناخته 49152 و 49154 و 49155 را هم مسدود کنید .
کلا پورت هایی را که استفاده نمی کنید ببندید .
با سلام
سرور را restrat و پورت 21 باز شد. ولی مشکل همچنان باقی است.


PORT STATE SERVICE
7/tcp filtered echo
13/tcp filtered daytime
21/tcp open ftp
25/tcp open smtp
80/tcp open http
110/tcp open pop3
119/tcp open nntp
135/tcp open msrpc
139/tcp open netbios-ssn
143/tcp open imap
443/tcp open https
445/tcp open microsoft-ds
465/tcp filtered smtps
513/tcp filtered login
515/tcp filtered printer
3389/tcp open ms-wbt-server
5051/tcp filtered ida-agent
8000/tcp filtered http-alt
9999/tcp filtered abyss
49152/tcp open unknown
49153/tcp open unknown
49154/tcp open unknown
49157/tcp open unknown

khoshblagh
چهارشنبه 21 بهمن 1394, 21:45 عصر
به نظرم مشکل از پورت نیست.
چون خودم یک برنامه ftp همون کدی که گذاشتم استفاده میکنم.و از طریق اینترنت با ip static ها درحال تبادل هستم و هیچ پورتی رو نه بسته ام و نه باز کرده ام.(البته پورت های ناشناخته باز زیادی دارم که انتی ویروس بطور اتومات اون هارو block کرده.)
بنظرم وقتی پیغام socket میدهد:2 معنی از نظر بنده میدهد:
1-فایروال انتی ویروس اجازه کار رو به Ftp تون نمی ده و باید disable بشه.
2-سروری که قراره فایل بفرسته درست کارنمی کنه(یعنی فرمان هایی که برای دریافت اطلاعات نوشته اید ایرادی دارد(که به احتمال زیاد از کد نویسی نیست).


حال باید بررسی کنید ممکنه یکی از این 2 مورد باعث بشه فایل دریافت نشه یانه


با سلام خدمت دوست عزیز
1- فایر وال خاموش است.
2- مورد دوم را نمیدانم باید چکاری روش انجام بدم.
3 - کد شما هم مشکل را حل نکرد.

ابوالفضل عباسی
شنبه 24 بهمن 1394, 13:05 عصر
مشکل شما کمی عجیبه،چون هم پورت باز هست و هم فایروال خاموش است و هم کد نویسی اشکلا ندارد.:متعجب:
از نمونه کد هایی که توی اینترنت هست،کد فرستنده فایل رو تغییر دهید تا مشکل حل شود.خودم به این مشکل با سرور برنخورده ام.ولی یک بار بخاطر فایروال مشکل داشتم که اون هم حل شد.
کد های فرستنده فایل رو تغییر دهید تا مشکل حل شود.