PDA

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



farhadr1375
جمعه 21 فروردین 1394, 12:39 عصر
سلام . این متد رو برای دریافت اطلاعات از سرور نوشتم اما درست کار نمیکنه. ینی همه ی اطلاعاتی که سرور فرستاده رو نمیخونه. باید یکبار دیگه این تابع رو اجرا کنم تا باقی اطعات رو بخونه. ینی کلا باید 2 بار ای تابع اجرا بشه . میشه بگید اشکال کار کجاست ؟؟ مرسی


public void recieve_buffer()
{
do
{
data = ObjSocket.Receive(recived_buffer);


} while (ObjSocket.Available>0);
recived_string_from_modem = Encoding.UTF8.GetString(recived_buffer);
}

am_al_59
جمعه 21 فروردین 1394, 13:33 عصر
کارکردن با کلاس سوکت خیلی از تنظیمات رو دستی باید انجام بدین و وابستگی شدیدی به مقدار Buffer داره که حداکثر چه مقدار داده هارو میتونه تو خودش نگه داره
بهتره از کلاس TcpClient و TcpLisener استفاده کنید

farhadr1375
جمعه 21 فروردین 1394, 13:57 عصر
مگه این متد تا زمانی که سرور داره دیتا میفرسته به کلاینت نباید اجرا بشه؟ وقتی دیتا تموم شد باید مقدار ObjSocket.Available صفر بشه دیگه درسته؟؟؟؟ پس چرا دوباره سرور دیتا فرستاده ؟؟؟؟؟؟

drawback
یک شنبه 23 فروردین 1394, 10:42 صبح
سلام دوست عزیز
این برنامه رو بگیر مشکلت رو حل میکنه.
راستی like یادت نره:لبخند:
http://barnamenevis.org/showthread.php?491402-%D8%AF%D8%A7%D9%86%D9%84%D9%88%D8%AF-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%DA%A9%D8%A7%D9%81%DB%8C-%D9%86%D8%AA

alireza_s_84
یک شنبه 23 فروردین 1394, 11:05 صبح
مگه این متد تا زمانی که سرور داره دیتا میفرسته به کلاینت نباید اجرا بشه؟ وقتی دیتا تموم شد باید مقدار ObjSocket.Available صفر بشه دیگه درسته؟؟؟؟ پس چرا دوباره سرور دیتا فرستاده ؟؟؟؟؟؟
تا زمانی که کلاینت به سرور متصل باشه دیتا ارسال میشه ، حتی اگر مقدار این داده ارسالی 1 بیت باشه که بیانگر برقراری ارتباط بین سرور و کلاینته.