PDA

View Full Version : ارسال و دریافت فایل و همچنین نوع فونت در Socket Programing



saman_h
جمعه 05 خرداد 1391, 19:20 عصر
سلام دوستان
تا حالا هر سوالی پرسیدم مشاهده کننده داشته اما هیچ جوابی ندادید !!
دارم روی یه نرم افزار چت که از Socket استفاده میکنه و برپایه TCP/IP هست ، کار میکنم . الان هم دوتا سوال دارم :
1- واسه ارسال و دریافت فایل مشکل دارم . اگه میشه راهنماییم کنید . درضمن نمیخوام از توابع ویندوز و DLL هاش استفاده کنم .
2- همراه متنی که به سرور میفرستم دارم مشخصات رنگ و فونت رو ارسال میکنم . توی سرور با استفاده از دستور Split دارم اون بخش مشخصات رنگ و فونت رو جدا میکنم . رنگ رو اعمال کردم اما فونت رو نمیدونم چطوری باید اعمال کنم :

اینو از کلاینت میفرستم :



byte[] b = Encoding.UTF8.GetBytes(hostName + " : " + txt_message_send.Text + Convert.ToChar("\n") + "" + System.Drawing.ColorTranslator.ToHtml(colorDialog1 .Color) + "" + fontDialog1.Font.Name + "" + fontDialog1.Font.Size.ToString());


بعد تو سرور اینطوری جداش میکنم :


string txt_beforeSplit = Encoding.UTF8.GetString(buff);


string[] Arr_After_Split = txt_beforeSplit.Split('');

message = Arr_After_Split[0] ;


MessageColor = System.Drawing.
ColorTranslator.FromHtml(Arr_After_Split[1]);



بعد اینجوری متن انتخاب شده توی richtext box رو تغییر میدم :


message_recive.SelectionColor = MessageColor;


اگه ممکنه راهنماییم کنید . واقعا ممنون میشم

saman_h
شنبه 06 خرداد 1391, 14:56 عصر
:گریه:واقعا از دوستان و اساتید کسی نیس من رو راهنمایی کنه ؟! میدونید تا حالا چندتا سوال پرسیدم هیچکس به هیچکدوم جوابی نداده !!

vof.ir
شنبه 06 خرداد 1391, 15:41 عصر
سلام دوست عزیز
اول از همه پستت را اگر میتونی ادیت کن و کدت را داخل تگ کد از نوع سی شارپ قرار بده که خوانا تر بشه
فایلت را چند بخش کن
بعد بریز داخل یک بافر
هر سری یک بخش از فایل یعنی به اندازه بافر به طرف مقابل ارسال کن
http://www.codeproject.com/Articles/24017/File-Transfer-using-Socket-Application-in-C-NET-2

saman_h
شنبه 06 خرداد 1391, 17:04 عصر
سلام دوست عزیز
اول از همه پستت را اگر میتونی ادیت کن و کدت را داخل تگ کد از نوع سی شارپ قرار بده که خوانا تر بشه
فایلت را چند بخش کن
بعد بریز داخل یک بافر
هر سری یک بخش از فایل یعنی به اندازه بافر به طرف مقابل ارسال کن
http://www.codeproject.com/Articles/24017/File-Transfer-using-Socket-Application-in-C-NET-2


ممنون از پاسختون دوست عزیز چک میکنم و نتیجه رو بهتون میگم .
واسه اون قسمت فونت هم میتونید منو راهنمایی کنید . ممنون میشم

vof.ir
شنبه 06 خرداد 1391, 22:21 عصر
برای بحث فونت و سایر مشخصاتی که همراه پیام ارسال میشه
مثلا همین خندانکهایی که توی یاهو مسنجر هست
شما می تونید یک ساختار xml
به طور مثال
یا هر ساختاری که خودتان صلاح می دانید طراحی کنید
بعد اون ساختار را ، در قالب متن در بیاورید
یا یک کار دیگه
می تونید پیام هاتون را به صورت یک کلاس در بیارید
مثلا یک کلاس به اسم Message که حاوی چند property هست
مثلا
message
style
style.font
style.size
smilies
و...
بعد این پراپرتی ها را مقدار دهید کنید
سپس نمونه ای که از این کلاس ساختید را سریالایز کنید که به صورت یک رشته در میاد
بعد در طرف مقابل دیسریالایز کنید و دوباره یک نمونه از همان کلاس، در طرف دیگر کار ایجاد می کنید و از پراپرتی های اون شی ساخته شده برای نمایش پیام استفاده می کنید
xmlserializer
را در دات نت سرچ کنید

saman_h
شنبه 06 خرداد 1391, 22:58 عصر
راستش سر در نیاوردم چی گفتید !! من زیاد وارد نیستم . اگه ممکنه به همون روشی که رفتم راهنماییم کنید ممنونتون میشم

vof.ir
پنج شنبه 18 خرداد 1391, 10:05 صبح
با سلام
میبخشید که دیر شد
دوست عزیز؛ ببینید منظور کلی من این هست که هر پیغام شما دارای یک ساختاری هست؛ مثل کدهای html
حالا اینکه این ساختار چه مدلی باش و چه مدلی منتقل صد تا راه و ایده میشه براش ارائه کرد
برای اعمال کردن فونت هم؛ اگر کنترلی که درش دارید متن را نمایش می دهید
textbox معمولی باشد؛ امکان اعمال فونت به بخش خاصی از متن نیست

اما با RochTextBox میشه
با پراپرتی هاش سر و کله بزنید مشخص میشه.

saman_h
پنج شنبه 18 خرداد 1391, 13:19 عصر
با سلام
میبخشید که دیر شد
دوست عزیز؛ ببینید منظور کلی من این هست که هر پیغام شما دارای یک ساختاری هست؛ مثل کدهای html
حالا اینکه این ساختار چه مدلی باش و چه مدلی منتقل صد تا راه و ایده میشه براش ارائه کرد
برای اعمال کردن فونت هم؛ اگر کنترلی که درش دارید متن را نمایش می دهید
textbox معمولی باشد؛ امکان اعمال فونت به بخش خاصی از متن نیست

اما با RochTextBox میشه
با پراپرتی هاش سر و کله بزنید مشخص میشه.

تشکر دوست عزیز ، هفته پیش تونستم کاری که میخواستم رو انجام بدم بسکه باهاش ور رفتم !! فقط یادم رفت بیام اینجا و خبر بدم
بازم ممنون از راهنماییتون

ahmadreza517
پنج شنبه 18 خرداد 1391, 17:19 عصر
به نام تنها برنامه نویس هستی
سلام

از روش متنی استفاده کن

برای فونت ببین کمک می کنه

saman_h
پنج شنبه 18 خرداد 1391, 23:20 عصر
به نام تنها برنامه نویس هستی
سلام

از روش متنی استفاده کن

برای فونت ببین کمک می کنه




با تشکر از پاسخ خوبتون اما دوست عزیز منکه گفتم کارم راه افتاد !! این پست روهم فردا پاک میکنم ( البته اگه یادم نره ) . کارتون جالب بود اما نیازی به این همه دردسر نداشت ! از طرف دیگه مشکل من با دریافتش از طرف سرور و اعمالش روی متن بود که خداروشکر تونستم به راحتی درستش کنم .
بازم ممنون از پاسختون و اضافه کنم که کارتون هم جالب بود . یجورایی همون کاری بود که خودم کردم اما خودم با یکی دو خط انجام شد

vof.ir
جمعه 19 خرداد 1391, 00:53 صبح
خب دوست عزیز؛ خیلی خوب خواهد بود که اطلاعات و تجربیاتتان را در صورت امکان در همین تاپیک به اشتراک بگذارید
موافقید؟

saman_h
جمعه 19 خرداد 1391, 11:31 صبح
خب دوست عزیز؛ خیلی خوب خواهد بود که اطلاعات و تجربیاتتان را در صورت امکان در همین تاپیک به اشتراک بگذارید
موافقید؟

چشم حتما ... چرا که نه !؟
من داشتم با این دستور یه سری اطلاعات رو درقالب متن ارسال میکردم :

byte[] b = Encoding.UTF8.GetBytes(hostName + " : " + "~" + txt_message_send.Text + Convert.ToChar("\n") + "~" + System.Drawing.ColorTranslator.ToHtml(colorDialog1 .Color) + "~" + fontDialog1.Font.Name + "~" + fontDialog1.Font.Size.ToString());

مشکل این بود نمیتونستم نوع و سایز فونت رو توی سرور روی متنم اعمال کنم از این دستورات واسه جدا کرردن قسمت های مختلف متن ارسالی استفاده کردم :
string txt_beforeSplit = Encoding.UTF8.GetString(buff);
string[] Arr_After_Split = txt_beforeSplit.Split('~');
message = Arr_After_Split[0] + Arr_After_Split[1];
MessageColor = System.Drawing.ColorTranslator.FromHtml(Arr_After_ Split[2]);
MessageFont_Name = Arr_After_Split[3].ToString();
MessageFont_Size = float.Parse(Arr_After_Split[4]);

و اینطوری مقادیر رو روی متن اعمال کردم :
این واسه رنگ بخشی از متن که اعمال شده بود :
txt_message_show.SelectionColor = MessageColor;

اینم واسه فونت و سایز بخشی که انتخاب شده بود :
txt_message_show.SelectionFont = new Font(MessageFont_Name, MessageFont_Size);