PDA

View Full Version : سوال: ارسال فولدر به کلاینت از طرف سرور + #C



Sp|R|T
سه شنبه 09 مهر 1392, 11:24 صبح
سلام دوستان من یه برنامه رو طراحی کردم که میشه فایل رو از طرف سرور به کلاینت ها ارسال کرد



خب واسه ارسال فایل مشکلی ندارم و حالا قصد دارم که سمت سرور بتونه یک فولدر رو انتخاب کنه و فولدر رو ارسال کنه


واسه ارسال فولدر به کلاینت، باید از چه تکنیکی یا کدی استفاده کنم ؟



آیا ارسال فایل با ارسال فولدر باهم فرق داره ؟


ممنون میشم راهنماییم کنید :)

hamid_hr
سه شنبه 09 مهر 1392, 11:55 صبح
خب ببين
فولدر فقط يك نام هستش
تو نام فولدرو بفرست
كلاينت اونو بسازه
بعد دونه دونه فايلا رو بفرست به كلاينت
بگو مسيرشون اون فولدري هست كه ساختي

Sp|R|T
سه شنبه 09 مهر 1392, 12:32 عصر
خب ببين
فولدر فقط يك نام هستش
تو نام فولدرو بفرست
كلاينت اونو بسازه
بعد دونه دونه فايلا رو بفرست به كلاينت
بگو مسيرشون اون فولدري هست كه ساختي

ممنون حمید جان
دقیقآ یکی از دوستان هم همین توضیح رو واسم داد

ولی خب یکم واسم نامهموه

اگه با یه نمونه کد مثال بزنین ممنون میشم

hamid_hr
سه شنبه 09 مهر 1392, 13:19 عصر
ميشه بگيد برا فايل چطور اين كار رو ميكنين؟

Sp|R|T
چهارشنبه 10 مهر 1392, 11:15 صبح
ميشه بگيد برا فايل چطور اين كار رو ميكنين؟

حمید جان

من واسه ارسال فایل میام توسط OpenFileDialog ، فایل هایی که انتخاب شده رو داخل یه List<string> list = new List<string>() میریزم و سپس توسط فورایچ :

foreach (string file in list)
{
transferClient.QueueTransfer(file);
}

به کلاینت ها ارسال میکنم.

و اما کلاس transferClient که نوشتم به این شکله:






public class TransferClient
{

public void QueueTransfer(string fileName)
{
try
{
//We will create our upload queue.
TransferQueue queue = TransferQueue.CreateUploadQueue(this, fileName);
//Add the transfer to our transfer list.
_transfers.Add(queue.ID, queue);
//Now we will create and build our queue packet.
PacketWriter pw = new PacketWriter();
pw.Write((byte)Headers.Queue);
pw.Write(queue.ID);
pw.Write(queue.Filename);
pw.Write(queue.Length);
Send(pw.GetBytes());

//Call queued
if (Queued != null)
{
Queued(this, queue);
}
}
catch
{
}
}
public void Send(byte[] data)
{
//If our client is disposed, just return.
if (Closed)
return;

//Use a lock of this instance so we can't send multiple things at a time.
lock (this)
{
try
{
//Send the size of the packet.
_baseSocket.Send(BitConverter.GetBytes(data.Length ), 0, 4, SocketFlags.None);
//And then the actual packet.
_baseSocket.Send(data, 0, data.Length, SocketFlags.None);
}
catch
{
Close();
}
}
}
}



اینها قست های اصلی کدم هسش که وظیفه ارسال فایل رو داره .