# برنامه نویسی با محصولات مایکروسافت > برنامه نویسی مبتنی بر Microsoft .Net Framework > WCF , Web Services , .Net Remoting >  ارسال فايل با سوكت پروگرمينگ

## Somayeh_Zamani

سلام،
مي‌خواهم با استفاده از سوكت پروگرمينگ، برنامه‌اي بنويسم كه دو كلاينت كه به هم شبكه هستند و در حال چت هستند، به يكديگر فايل بفرستند، لطفا راهنمايي بفرماييد.
 (با قسمت چت، مشكلي ندارم. فقط مي‌خوام انتقال فايل را بدانم)

ممنون

----------


## manitack

سلام
بايد با يكي از روشهاي موجود فايل رو سريالايز كني مثل فرمت باينري.بعد ارسال كني.
براي جزئيات سرچ كني مطلب زياده.

----------


## Somayeh_Zamani

> سلام
> بايد با يكي از روشهاي موجود فايل رو سريالايز كني مثل فرمت باينري.بعد ارسال كني.
> براي جزئيات سرچ كني مطلب زياده.


 
يه دقيقه صبر كنيد!!!
يعني اف تي پي كشكه؟

----------


## manitack

http://www.csharphelp.com/archives/archive9.html

----------


## farzin.fz

برای قسمت چت می توان ازUDP استفاده نمود ولی برای ارسال فایل می بایست از TCP استفاده نمود مگراینکه خودمان بخواهیم با UDP  مکانیزم TCP را شبیه سازی کنیم .
برای مثال فایلی به نام Text.txt را که در درایو C ایجاد کرده ایم برای انتقال در نظر می گیریم که ابتدا باید اسمبلی های زیر را درصورت لزوم اضافه و اعلان کنیم : 
;using System.Net.Sockets
using System.IO;//Client Code Part//FileStream fs =File.Open("C:\\text.txt",FileMode.Open); //To open filebyte[] f_buffer = newbyte[fs.Length];//Creating a bufferfs.Read(f_buffer, 0, (int)fs.Length);//Filling the bufferTcpClient cs = newTcpClient("Localhost", 12120);//127.0.0.1NetworkStream networkStream = cs.GetStream();//NetstreamnetworkStream.Write(f_buffer, 0, f_buffer.GetLength(0));//TransfernetworkStream.Close();//Closing stream 
باید دقت شود که اگر کد بالا بدون کد SERVER اجرا شود Exception ایجاد می کند چون ارتباط TCP  است حتما اول باید SERVER وجود داشته باشد که کد آن در زیر است :;using System.Net.Sockets 
//Server Code Part//
TcpListener tcpListener;//declare
TcpClient tc;//declare

tcpListener= newTcpListener(12120);//initializewhile (true)//Endless loop
}
tc = tcpListener.AcceptTcpClient();//accept connection
if (tc.Connected) //checking for connectionaccept();//calling the accept function{
void accept()//function
}
int bs = 1024;//declareByte[] dataByte = newByte[bs];//buffer
NetworkStream ns = tc.GetStream();//getting netstream
ns.Read(dataByte, 0, bs);//write to buffer
FileStream fs; //declarefs=newFileStream("C:\\new_file.txt",FileMode.Create);//downloaded filefs.Write(dataByte, 0, dataByte.Length);//Write to file
fs.Flush();//Flush to file
fs.Close();//Close stream{به این ترتیب یک ترنسفر ساده صورت می گیرد و در مورد کد بالا باید در نظر داشت که فقط 1024 بایت جابجا گشته و کد Server مذکور حتی المقدور باید به صورت Multithread اجرا گردد وگرنه شما UserInterfaceنخواهید داشت .

----------


## Somayeh_Zamani

سلام،
ببين شما مي توني كد سرورتو به اين كد سرور اضافه كني؟
اين كد رو يكي از دوستان تو سايت گذاشته ولي خودشم نمي تونه، انتقال فايل رو اضافه كنه!!!

----------


## farzin.fz

منطق به کار رفته در کد بالا خیلی ساده است با این حال اگر نیاز دارید کد خودتان را به صورت Flat Text در اینجا کپی کنید تا تغییرات لازم را در صورت لزوم اعمال کنم .

----------


## Somayeh_Zamani

سلام،
ساده بودن كه مي دونم خيلي ساده است. ولي انتقال فايل رو نمي دونم چه طوري ميشه. آخه اين يه چت رومه و سرور داره متن‌ها رو واسه همه مي‌فرسته. نمي دونم از كجا بفهمه كه چيزي كه الان اومده يك متنه يا فايل؟ :افسرده:

----------


## farzin.fz

شما می توانید متن را روی یک پورت و فایل را روی پورت دیگری بفرستید .

----------


## mostafa-66

با سلام دوستان کسی ارسال فایل با متد soket.sendfile و طریقه دریافت آن را میدونه اگر راهنمایی بفرمایید ممنون میشم

----------

