PDA

View Full Version : سوال: کار با اف تی پی(ارسال و دریافت فایل از هاست)



صادق صدقی
چهارشنبه 20 بهمن 1389, 20:50 عصر
سلام
دوستان من هر چی سرچ کردم به سوالم نرسیدم
بهترین روش برای ارسال و دریافت فایل از هاست چیه؟
اف تی پی؟
یا با سوکت هم میشه؟

لطفا کمکم کنید

majidrezaei2007
چهارشنبه 20 بهمن 1389, 21:33 عصر
با سوکت خیلی راحت تره . منتها باید از الگوریتم های خاصی استفاده کنی . آخه ممکنه اطلاعات ناقص برسه . اونوقت باید با ارسال بسته چک کنی که اطلاعات سالم رفته یا نه
با عبارتی خودت باید شرط های FTP رو روش پیاده کنی

ضمنا اگه دیتا ها رو فشرده کنی (بهتره با الگوریتم هافمن) خیلی بهتره

Alexia Himmer
چهارشنبه 20 بهمن 1389, 23:02 عصر
دوست عزیز می توانید این مورد رو با ftp و با استفاده از برنامه نویسی روی سوکت انجام بدید اما مد نظرتون باشه برای ارسال فایل باید چندین عمل دست تکانی (hand shaking) با server داشته باشی برای اطمینان از accept فایل از طرف server.

برات قسمت send فایل رو از طریق ftp روی port دلخواه قرار میدم بررسی کن موردی بود در خدمتت هستم receive رو هم اگر خواستی قرار میدم.



// first you have to add System.Net.Sockets & System.IO namespaces to your project..
private void Send_FTP(string filename, string recipientIP)
{


TcpClient tcpclient = new TcpClient();
tcpclient.Connect(recipientIP, FTPPORTNO);
int buffersize = tcpclient.ReceiveBufferSize;
NetworkStream nws = tcpclient.GetStream();

FileStream fs;

fs = new FileStream(filename, FileMode.Open, FileAccess.Read);
byte[] bytestosend = new byte[fs.Length];
int numbytesread = fs.Read(bytestosend, 0, bytestosend.Length);

int totalbytes = 0;

for (int i = 0; i <= fs.Length / buffersize; i++)
{

if (fs.Length - (i * buffersize) > buffersize)
{

nws.Write(bytestosend, i * buffersize, buffersize);
totalbytes += buffersize;


}
else
{

nws.Write(bytestosend, i * buffersize, (int)fs.Length - (i * buffersize));
totalbytes += (int)fs.Length - (i * buffersize);


}



Application.DoEvents();
}

fs.Close();
tcpclient.Close();

}

صادق صدقی
پنج شنبه 21 بهمن 1389, 00:06 صبح
سلام
مرسی که توجه کردین
یک سواله دیگه که هست
اینجا اکانته ftp نمی خواد؟
چونمن با cute Ftp که کار می کنم یک آی پی می خواد
یوزر نیم و پسورد

این چه طوریه کارش؟

Alexia Himmer
پنج شنبه 21 بهمن 1389, 14:55 عصر
زمانی که ما در مورد ftp صحبت می کنیم در واقع داریم مجموعه قوانین و قراردادهای مربوط به انتقال فایل در فضای شبکه را مورد بحث قرار می دهیم . در مطلبی که خدمتت عرض کردم گفتم که باید چند (hand shaking ) رو مد نظر داشته باشی. می تونیم این روند رو به صورت زیر داشته باشیم :

( فرض می کنیم که user قصد داره فایل test.dat رو برای server ,ارسال کنه . )

1 - user مقدار [user,server][test.dat] [file]رو برای server می فرسته

2 - server برای تایید قبول فایل مقدار [user,server][test.dat] [send_file]برای user می فرسته

3 - server روی port مورد نظر به حالت گوش دادن در می آد .. . listening state

4 - و در نهایت user با استفاده از IP سرور و port number مورد نظر سرویس FTP رو شروع می کنه .


اما این مورد باید مد نظر باشه که به عنوان یک قاعده اولیه شما باید مشکلی با سرور از لحاظ authority نداشته باشید
البته بعضی سرورهای FTP با Request های anonymous و بی نام کنار میان و اونا رو accept می کنن اما در مواردی که شما باید ok باشید از لحاظ هویت برای سرور (Authority) می توانیم parameter های مورد نظر رو که همون username & password شما هستند رو با تابع مورد نظر برای سرور ارسال کنید و در ابتدای چهار موردی که عرض کردم باید شما ارسال و تایید یا عدم تایید از سرور رو هم داشته باشید یعنی موارد بالا به 6 گزینه افزایش پیدا می کنه .