PDA

View Full Version : سوال: دریافت یک عکس در برنامه سوکت پروگرمینگ



samsami
دوشنبه 01 اسفند 1390, 16:59 عصر
با سلام خدمت دوستان عزیز

من یک عکس را به روش زیر ارسال می کنم
حالا تو قسمت کلاینت که باید عکس رو بگیرم و نمایش بدم چگونه عمل کنم.



byte[] buf = File.ReadAllBytes(@"C:\k.jpg");
sock.Send(buf);

REZAE2011
دوشنبه 01 اسفند 1390, 17:35 عصر
سلام
دوست عزیز در لینک زیر تمام آنچه که می خواهی هست:
http://barnamenevis.org/showthread.php?307108-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D8%A7%DB%8C-%D8%A8%D8%B1%D8%A7%DB%8C-%D9%85%D8%A7%D9%86%DB%8C%D8%AA%D9%88%D8%B1%DB%8C%D 9%86%DA%AF-%DA%A9%D9%84%D8%A7%DB%8C%D9%86%D8%AA-%D9%87%D8%A7&highlight=socket+%D8%B9%DA%A9%D8%B3+%D9%85%D8%A7%D 9%86%DB%8C%D8%AA%D9%88%D8%B1%DB%8C%D9%86%DA%AF
یا این کد رو در سمت کلاینت که می خواهد داده(عکس ارسالی از سرور) را دریافت کند بنویس:
Byte[] bytesReceived = new Byte[2048];//2kb
FileStream strm = new FileStream(file_path_save, FileMode.OpenOrCreate, FileAccess.Write);
BinaryWriter binWriter = new BinaryWriter(strm);



do
{

bytes = s.Receive(bytesReceived, bytesReceived.Length, 0);
for (int i = 0; i < bytes; i++)
binWriter.Write(bytesReceived[i]);


}
while (bytes > 0); s.close(); strm.close();
کد بالا داده را از سرور دریافت می کند و در مسیر file_path_save این داده را ذخیره می کند

متغییر file_path_save مسیر ذخیره فایل در کلاینت را مشخص می کند پس جای این متغییر یک مسیر واقعی بده.
و s هم در کد بالا یک شی از کلاس socket است

و اگه می خوای برنامه در حلقه while هنگ نکنه باید کدهای بالا را در یک متد بنویسی و متد در یک نخ اجرا شود چون متد receive تا زمانی که کل داده دریافت شه برنامه را در همان خط منتظر می گذارد.


http://msdn.microsoft.com/en-us/library/system.net.sockets.socket.aspx