تبلیغات :
ماهان سرور
آکوستیک ، فوم شانه تخم مرغی ، پنل صداگیر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




صفحه 4 از 4 اولاول 1234
نمايش نتايج 31 به 34 از 34

نام تاپيک: کار کردن با سوکت در asp.net

  1. #31
    در آغاز فعالیت
    تاريخ عضويت
    Apr 2010
    محل سكونت
    تهران-نارمك
    پست ها
    6

    پيش فرض

    سلام
    من هنوز نتونستم مشكلمو حل كنم
    خواهشا فقط يه example تحت وب واسه ارسال و دريافت از طريق سوكت به من بديد و اينكه اين كار فقط با يك كانكشن باشه و بتونم كانكشن رو هر وقت خواستم disconnect كنم.
    ممنونم

  2. #32
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام
    میشه این روش رو پیاده کنید؟
    خیلی واضح است که این اطلاعات و اشیا باید در محلهای static و یا شی Application و یا Cache نگه داری شود.
    اصلاً به همین دلیل گفتم که به یک id نیاز داریم تا ajax ان id را بدهد و اطلاعات و آخرینت وضعیت را بگیرید.

    اگر قرار بود همه چیز با همان ریسمان های خودشان و در محدوده دید خودشان نگه داری شود که id نمیخواست.
    در واقع اطلاعات وضعیت و سایر اطلاعات مورد نیاز در یک ساختار Dictionary مانند در مکانی عمومی نگه داری میشود که کلید ان همان id است و در خواست های Ajax از ریسمان های مختلف می آیند و به این Dictionary ارجاع میدهند و آخرین دیتای موجود را میخوانند.

    در دیتا وضعیت در یک struc ذخیره شده باشد خود ریسمانی که مسئول پردازش اولیه این درخواست و مدیریت سوکت هم است باید id را بداند و با هر مرحله تغییر و پیشرفت خانه و سطر Dictionary مورد نظرز را به روز کند.
    ولی اگر دیتا در یک class ذخیره شده باشد چون class ها ساختار اشاره گری دارند و در حافظه هیپ هستند ریسمان مسئول پردازش ریسمان فقط وهله همان class دیتا را دارد و فیلدهای ان را با هر تغییر به روز میکند.

    ولي حالا كه ميخوام پيغام دوم رو بفرستم ديگه كانكشن بازي روي ماي وب وجود نداره، برام عجيبه كه پس چطور پيغامها از طرف سرور بانك مياد؟
    حالا يك كانكشن جديد ايجاد ميكنم و پيغام جديد رو ميفرستم ولي سرور بانك اينو بعنوان كانكشن شماره ٢ ميشناسه چون از نظر سرور بانك كانكشن قبلي هنوز بازه. بخاطر همين يه كم مشكل پيدا ميكنم.
    یعنی شما میفرمائید در کلاینت connection بسته شده در حالیکه سرور هنوز ان را باز میداند؟

    و مشكل آخر اينه كه وقتي من ماي وب رو ميبندم هنوز سرور بانك داره قيمتهاشو ميفرسته. نميدونم چرا كانكشنم بسته نميشه؟
    از مجموعه این جملات و جملات قبلی تان اینطور نتیجه میگیرم که خود کدنویس تان مشکل دارد ولی همینطوری نمیتوانم بگویم کجایش را اشتباه کرده اید.

    حالا يك كانكشن جديد ايجاد ميكنم و پيغام جديد رو ميفرستم
    ... اينكه اين كار فقط با يك كانكشن باشه و بتونم كانكشن رو هر وقت خواستم disconnect كنم ...
    در کل برای تحت وب و Asp.net این را پیشنهاد میکنم.
    یعنی اینکه هر سوکت را خیلی سریع باز کنید و یک کار را انجالم دهید و در اولین فرصت سوکت را ببندید.
    چون ذات برنامه های وبی، فضای مطمئنی برای نگه داری یک شی به طور زنده در حافظه ندارد.

    درضمن لينك دانلود شما هم خطا ميده و نتونستم دانلود كنم
    از این هاستینگ درپیت است! در ساعت دیگر و متفاوت سعی کنید دانلود کنید.

    [quote]
    خواهشا فقط يه example تحت وب واسه ارسال و دريافت از طريق سوكت به من بديد
    [/.quote]
    متاسفانه و با شرمندگی بسیار باور بفرمائید فرصت این یکی را ندارم.
    الآن هم اگر ملاحظه کنید متوجه میشوید ساعت از یک و نیم بامداد هم گذشته که وقت کردم انلاین شوم و تازه شرمنده چند نفر از دوستان هم هستم که پیام خصوصی هایشان بی جواب مانده ...

    سوال را شاید اگر بلد باشم، فرصت کنم جواب دهم ولی سمپل و پروژه و...

    =====

    احتمالاً قبلاً گفتم ولی خودم یادم رفته چی گفتم ...
    بحرحال یاد اوری میکنم که اگرکه سرور و کلاینت وب از خودتان و تحت کنترلر خودتان است از پروتکل های سطح بالاتر استفاده کنید که کنترلر جزئیات بیشتر بر عهده سیستم عامل و فریم ورک و سایر برنامه ها باشد کد شما خیلی کوتاه و مختصر تر شود ...

    مثلاً در ساده ترین شکلش میتوانید اجازه دسترسی به بانک SQLServer سرور را به کلاینت هم بدهید.
    یا حداقل از یک وب سرویس استفاده کنید و یا از یک httphandler که فایل xml یا rss خروجی بدهد استفاده کنید و...

    شب بخیر.

  3. #33
    در آغاز فعالیت
    تاريخ عضويت
    Apr 2010
    محل سكونت
    تهران-نارمك
    پست ها
    6

    پيش فرض

    سلام
    واقعا شرمنده ام كه تا اين وقت شب مجبور شديد جواب منو بديد.
    از توضيحاتتون واقعا ممنونم.
    از توضيحاتتون يه چيزايي دستگيرم شد ولي متاسفانه من تو دات نت خيلي ضعيفم.
    يه جورايي موفق شدم جواب بگيرم ولي مشكل بسته شدن كانكشن وجود داره.
    فرض كنيد من يك tcpclient ايجاد ميكنم بنام test و با اون پيغامم رو ميفرستم. تا اينجا كانكشن بازه و رو سرور هم ميبينم كه بازه و به راحتي هم disconnect ميشه.
    حالا برنامه ميرسه به قسمت BeginRead ، خب هنوز كانكشن بازه ولي از بعد از اين دستور حالا ديگه نه ميتونم پيغامي بفرستم نه ميتونم test رو ببندم چون ميگه كانكشن شما بسته است.
    رو سرور كه نگاه ميكنم ميبينم كانكشن بازه و اگر از طرف سرور پيغامي بفرستم كلاينت دريافت ميكنه.
    نميدونم چه اتفاقي ميفته؟
    واقعا شرمنده از اينكه اينقدر وقتتون رو ميگيرم
    با تشكر.

  4. #34
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام
    مشکل فعلی شما به دلیل تز حوزه خارج شدن و پاک شدن کلاس page جاری است.

    کلاس page مکان مناسبی برای نگه داری طولانی مدت متغییرها نیست.

    قبلا هم کلیاتش را خدمتتان عرض کردم...
    شما نیاز به یک کلاس مجزا جهن مدیریت کل این ارنباطات دارید.
    از سایر page ها فقط بای متدهای این کلاس اجرا شود.
    اشاره گر این کلاس باید جهت عمومی بودن و از حوزه خارج نشدن و عدم جمع اوری توسط garbage، باید به صورت vb.shared یا cs.static و همچنین در شی Application تعریف شود.

    خیلی سعی کردم وقتی بگذارم و کد کاملتری برایتان بگذارم، ولی واقعاً و با شرمندگی کاملتر از این فرصت ندارم ...
    به متدهای این کد دقت کنید و روابط بین انها را درک کنید و سعی کنید جاهای خالی که با ...// مشخص شده را با کدهای مناسب پر کنید.
    به نظر من که این اسکلت بندی، کاملاً چهارچوبی را که بارها سعی کردم برایتان تشریح کنم نشان و به نظرم خودم خیلی واضح است!
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    اگر این کد تکمیل شود با دستوری مثل این میتوانید یک اطلاعات را به IP+Port ای خاص ارسال کنید و هندلر عددی (چیشری شبیه کلید یا شماره پیگیری) برای دفعات بعدی بگیرید که با ان هدلر عددی میتوانید مجدد به همان مقصد قبلی اطلاعات ارسال کنید یا اطلاعات رسیده از همان مقصد را ردیافت کنید.
    به راحتی میتوانید پس از اولین درخواست این هندلر عددی را در ViewState یا Session و... کاربر قرار دهید و Send و Receive را با داشتن آن انجام دهید ...
    کدهایی مثل اینها:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    میبینید که استفاده بسیار ساده و روشن و شفافی دارد.

    این روش پیاده سازی مشکل از حوزه خارج شده و جمع آوری را هم ندارد.
    ولی بحرحال برنامه شما در حوزه WebApp و از ریسمان اولیه IIS اجرا میشود.
    بدیهی است که ...
    1) شامل مجوزهای تایین شده برای دامین سایت شما میشود.
    2) IIS و Framework2,3 اگر برای مدتی هیچ فردی به سایت شما متصل نشود و هیچ درخواستی به سایت شما نرسد در جهت افزایش بازدهی سرور و نیز کارکرد بهتر سایت خود شما کلاً سایت شما را از RAM خارج و Down میکنند.
    (البته راه حلی در Framework4 در نظر گرفته شده)

    در نتیجه نیتوانید انتظار داشته باشید وقتی که کاربری هم درسایت شما نیست، اجرای کدها و دستورات برای مدت زیادی ادامه یابد.

    =====

    اگر سوالی در مورد متدهای فوق و کاری که انجام میدهند یا باید انجام بدهند داشتید، مطرح بفرمائید.
    شاید کمی کار داشته باشم ولی یا جایی که وقت و سوادم اجازه دهد در خدمت هستم.
    موفق باشید.

  5. این کاربر از _H2_ بخاطر این مطلب مفید تشکر کرده است


صفحه 4 از 4 اولاول 1234

Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

برچسب های این موضوع

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •