PDA

View Full Version : سوال: ارسال فایل در شبکه



رامین مرادی
چهارشنبه 19 فروردین 1394, 19:55 عصر
سلام دوستان . ممنون میشم کمک کنید و راه ارسال فایل تو شبکه رو برام توضیح بدید. جستجو هم کردم متاسفانه اون چیزی که خواستم نبود.
فرض کنید یک سرور داریم و یک کلاینت. قراره کلاینت فایلی رو ارسال کنه و در یه مسیر مشخص ذخیره بشه. اگه چندتا کلاینت باشه چطور فایلا رو جداگانه ذخیرع کنیم؟؟؟

am_al_59
چهارشنبه 19 فروردین 1394, 21:11 عصر
NetworkStream
Socket
TcpClient
UdpClient


با همه این کلاس ها می تونی کارکنی هر کدومشم روش خودشو داره برای تک تکشون یک دنیا مثال تو اینترنت هست

saied_hacker
چهارشنبه 19 فروردین 1394, 22:14 عصر
شما یه سرور داری که روی اون از طریق سوکت به شبکه گوش می کنید. هر کس بخاد چیری رو روی شبکه ارسال کنه باید متصل بشه به سرور و از اون طریق اطلاعات خودشو رو ارسال کنه...
مثلا میتونی یه همچین ساختاری رو پیاده سازی کنی و علاوه بر دریافت اطلاعات از سمت کلاینت راحت چک کنی که مال کدوم یوزر هست و کارهای لازم رو انجام بدی
List<mSocket> clientsList = new list<mSocket>();

struct mSocket
{
public socket socket{get;set}
public User user {get;set;}
}

هر وقت یه سوکت جدید کانکت شد به لیست اضافه کن بعد احراز هویت کن ( مثلا چون فکر کنم فایل دریافتی از هر کاربر رو میخای توی یه فولدر جداگانه بریزی ). وقتی میخای احراز هویت کنی ببین اطلاعات از کدوم سوکت اومده و پارپرتی یوزرش رو اپ دیت کن.
---------------------------------------------------------------------
این کد مثلا برای یه برنامه چت بود که نوشته بودم که می شد باهاش فایل هم ارسال کنی. هر کلاینت بعد از متصل شدن ( Accept ) یه نمونه ازش ساخته می شد و....

public class MyClient {
public MyClient(Socket socket, int bufferSize)
{
this.Socket = socket;
this._buffer = new byte[bufferSize];
}


public MyClient(int bufferSize = 1000000)
{
this._buffer = new byte[bufferSize];
}


public Socket Socket { get; set; }




public bool IsMessageReceiving { get; set; }
public int ReceivedSize { get; set; }
public int ReceivingMessageSize { get; set; }


public bool IsMessageSending { get; set; }
public int SentSize { get; set; }
public int SentMessageSize { get; set; }


private byte[] _buffer;
public byte[] Buffer { get { return _buffer; } }
public int UserID { get; set; }
}

Abbas Naghdi
چهارشنبه 19 فروردین 1394, 22:15 عصر
سلام دوستان . ممنون میشم کمک کنید و راه ارسال فایل تو شبکه رو برام توضیح بدید. جستجو هم کردم متاسفانه اون چیزی که خواستم نبود.
فرض کنید یک سرور داریم و یک کلاینت. قراره کلاینت فایلی رو ارسال کنه و در یه مسیر مشخص ذخیره بشه. اگه چندتا کلاینت باشه چطور فایلا رو جداگانه ذخیرع کنیم؟؟؟

شما باید از FTP استفاده کنید و برای هر کلاینت یه یوزر FTP درست کنید تا هر کاربر بر اساس تنظیمات فایل رو سر جایی خودش ذخیره کنه .
و البته یادتون نره فایروال OFF و سطح دسترسی بدین و از درایو C استفاده نکنید برای ارسال فایل در سرور چون در ویندوز 10 و 8 به مشکل بر میخورید ...

رامین مرادی
چهارشنبه 19 فروردین 1394, 22:24 عصر
ممنون دوستان. من کلا با شبکه تو سی شارپ کار نکردم. البته این کارو حدود دوسال پیش تو ویبی انجام داده بودم. ولی کلا تو شبکه سی شارپ کار نکردم بلد هم نیستم. ممنون میشم یه تایپیک یا متنی معرفی کنید تا کمی آشناتر بشم. در ضمن اون ساختاری که گفتید پیتده کنم سمت سرور باید باشه دیگه؟؟

drawback
یک شنبه 23 فروردین 1394, 10:56 صبح
سلام دوست عزیز
این سورس کامل برنامه File Transfer
دیگه احتیاج به نوشتن نداری برو حالشو ببر:قهقهه:
http://www.mediafire.com/download/uvn2p3a4dcn170z/File+Transdfer.rar

رامین مرادی
جمعه 28 فروردین 1394, 12:02 عصر
ممنون دوست عزیز کاش مقاله ای بود تا یاد بگیرم. سورس کد آماده بیشتر طول میکشه تا تفسیرش کنم.