ورود

View Full Version : آموزش: انتقال فایل در شبکه محلی



tooti98
دوشنبه 05 تیر 1391, 02:33 صبح
با سلام خدمت همه دوستان

من دارم روی یه نرم افزار کار میکنم که این نرم افزار نهایتا قراره روی یکی از کلاینت های شبکه(lan) کار کنه.
یکی از مراحل کار این نرم افزار انتقال یک فایل به روی یکی دیگه از کلاینت هاست که سیستم عاملش یونیکسه.
ضمنا سیستم عامل کامپیوتری که نرم افزار من روش نصبه ویندوز xp هستش.
حالا مشکل من اینه که برای انتقال فایلم به اون کلاینت با ید چیکار کنم
آیا نیازی به استفاده از telnet هست؟یا فقط ftp کافیه ؟ واینکه کلاینت مقصد سیستم عاملش یونیکسه مشکلی نیست؟
لطفا راهنمایی کنید
با تشکر

من توی این سایت خیلی جستجو کردم ولی متاسفانه یک تاپیک جامع در مورد انتقال فایل در شبکه های محلی نبود(حداقل من پیدا نکردم)

اگه میشه دوستان بصورت مرحله ای این موضوع رو باز کنند که کاملا جامع باشه و همه بتونن استفاده کنن
با تشکر

aram_2
دوشنبه 05 تیر 1391, 08:39 صبح
شما خودت میخوای کد بزنی که فایل رو انتقال بدی؟ اگه اینجوره با C++ کد بزن.

tooti98
دوشنبه 05 تیر 1391, 16:31 عصر
سلام دوست عزیز .من در مراحل پایانی پروژه ام هستم شاید سوئیچ کردن به یه زبان دیگه راه حل خوبی نباشه:ناراحت:

ضمنا یادم رفته بود که بگم! من با سی شارپ برنامم رو نوشتم

aram_2
دوشنبه 05 تیر 1391, 22:04 عصر
خب می تونید با دستورات خود سیستم عامل بفرستید.مثلا همون Telnetکه گفتید.تو سی شارپ میشه دستورات از این قبیل رو اجرا کرد.

tooti98
چهارشنبه 07 تیر 1391, 03:13 صبح
خب می تونید با دستورات خود سیستم عامل بفرستید.مثلا همون Telnetکه گفتید.تو سی شارپ میشه دستورات از این قبیل رو اجرا کرد.

سلام
مرسی از راهنماییتون میشه یه مثال از انتقال فایل با telnet بزارید.
باتشکر

aram_2
چهارشنبه 07 تیر 1391, 11:33 صبح
بنظرم با دستورات ftp کار کنید
این مثال رو ببینید:
مثال (http://www.cs.colostate.edu/helpdocs/ftp.html)

tooti98
چهارشنبه 07 تیر 1391, 17:56 عصر
مرسی از راهنماییتون من حتما بعد از اینکه تونستم مراحل انتقال رو به الگوریتم تبدیل کنم حتما برای استفاده همه همین جا میگذارم...

tooti98
دوشنبه 12 تیر 1391, 15:49 عصر
سلام همون طور که قول داده بودم قرار بود که مراحل انتقال فایل رو اینجا بزارم

خوب اول از همه باید بگم که پروتکل مخصوص انتقال فایل ftp هستش پس دلیلی ندیدم که برم سراغ پروتکل دیگه

خوب هر ایستگاه کاری(node) در شبکه یه ip و یه username , password(یا همون login) داره(یعنی باید داشته باشه!)

خب پس تا اینجا ملزومات برای ارسال اینها بودن:
1-IP
2-UserName
3-Password
4-یک فایل از سیستم منبع(همون سییستمی که قراره ارسال کننده فایل باشه) بهمراه مسیرش(path) مثلاC:\Users\Administrator\Desktop\testSrc\tex t.txt
خب حالا ورودی های مسئله تکمیله!
کافیه یه تابع برای ارسال داشته باشیم
تابع زیر براحتی فایل رو برامون ارسال میکنه :
/// <param name="filename">file full name to be uploaded</param>
private void Upload(string filename,string ftpServerIP,string ftpUserID,string ftpPassword)
{
FileInfo fileInf = new FileInfo(filename);
string uri = "ftp://" + ftpServerIP + "/" + fileInf.Name;
FtpWebRequest reqFTP;

// Create FtpWebRequest object from the Uri provided
reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + ftpServerIP + "/" + fileInf.Name));

// Provide the WebPermission Credintials
reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);

// By default KeepAlive is true, where the control connection is not closed
// after a command is executed.
reqFTP.KeepAlive = false;

// Specify the command to be executed.
reqFTP.Method = WebRequestMethods.Ftp.UploadFile;

// Specify the data transfer type.
reqFTP.UseBinary = true;

// Notify the server about the size of the uploaded file
reqFTP.ContentLength = fileInf.Length;

// The buffer size is set to 2kb
int buffLength = 2048;
byte[] buff = new byte[buffLength];
int contentLen;

// Opens a file stream (System.IO.FileStream) to read the file to be uploaded
FileStream fs = fileInf.OpenRead();

try
{
// Stream to which the file to be upload is written
Stream strm = reqFTP.GetRequestStream();

// Read from the file stream 2kb at a time
contentLen = fs.Read(buff, 0, buffLength);

// Till Stream content ends
while (contentLen != 0)
{
// Write Content from the file stream to the FTP Upload Stream
strm.Write(buff, 0, contentLen);
contentLen = fs.Read(buff, 0, buffLength);
}

// Close the file stream and the Request Stream
strm.Close();
fs.Close();
}
catch(Exception ex)
{
MessageBox.Show(ex.Message, "Upload Error");
}
}
فقط باید name space زیر رو اول using کنیم
Using System.Net
اگه سوالی بود در خدمتم
موفق باشید

احمد سامعی
چهارشنبه 31 اردیبهشت 1393, 16:23 عصر
سلام

من با کد جناب tooti98 تونستم به هاست سایتم فایل آپلود کنم اما می خوام در شبکه محلی فایل جابجا کنم آیا کسی می تونه راهنمایی کنه چه باید بکنم؟