نمایش نتایج 1 تا 10 از 10

نام تاپیک: از کجا بفهمیم ارتباط کلاینت با سرور در شبکه بعد از true شدن اتصال کانکشن قطع شده

  1. #1
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1385
    پست
    41

    از کجا بفهمیم ارتباط کلاینت با سرور در شبکه بعد از true شدن اتصال کانکشن قطع شده

    سلام دوستان
    برنامه ای دارم با دلفی که تحت شبکه استفاده می شه
    روش اتصال به بانک اطلاعاتی SQL از طریق Ado Connection می باشد
    به علت ضعیف بودن access point ممکنه هر از گاهی ارتباط شبکه قطع بشه در حالی که برنامه در حال استفاده توسط کاربر می باشد و کانکشن باز است حالا وقتی شبکه قطع میشه از اونجایی که کامپوننت Ado connection نمی فهمه که ارتباط قطع شده و ممکنه در خط بعدی برنامه یه Query چیزی اجرا بشه سیستم میره تو هنگ و پیغام خطا و بعضی وقتا فقط باید از task manager پروسه رو End Task کنی تا برنامه بسته شه!!
    می خواستم ببینم دوستان آیا چنین تجربه ای داشتن؟ یا راه حلی؟ من Event های کانکشن رو چک کردم هیچکدوم هوشمندی لازمو ندارن که بفهمن ارتباط با سرور قطع شده!!
    چصور می شه قبل از هر اجرا دستور دیتا بیسی چک بشه که اگر ارتباط کانکشن با سرور برقراره انجام بشه؟

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

  2. #2
    کاربر تازه وارد آواتار mofrad
    تاریخ عضویت
    خرداد 1386
    محل زندگی
    دنیای دلفی
    پست
    94

    نقل قول: از کجا بفهمیم ارتباط کلاینت با سرور در شبکه بعد از true شدن اتصال کانکشن قطع شده

    خودتون که جواب خودتون رو دادید دیگه! قبل از این که کوئری اجرا بشه چک کنید که اگر adoconnection1.connected = true اونوقت اجرا بشه. فکر نکنم چیزی غیر از این باشه؟!
    به لینک زیر هم یک سری بزنید:
    http://www.experts-exchange.com/Prog..._21320511.html

  3. #3
    کاربر تازه وارد آواتار 101101000
    تاریخ عضویت
    تیر 1389
    محل زندگی
    تهران
    پست
    53

    نقل قول: از کجا بفهمیم ارتباط کلاینت با سرور در شبکه بعد از true شدن اتصال کانکشن قطع شده

    بله ado ابزار کار راه بندازیه اما خیلی خنگه یعنی هیچ انعطافپذیری نداره. منم با مفرد موافقم
    قبل از انجام عملیات دیتا بیسیت connection رو چک کن.

  4. #4
    کاربر دائمی آواتار sasan_vm
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    زاهدان
    پست
    494

    نقل قول: از کجا بفهمیم ارتباط کلاینت با سرور در شبکه بعد از true شدن اتصال کانکشن قطع شده

    نقل قول نوشته شده توسط 101101000 مشاهده تاپیک
    بله ado ابزار کار راه بندازیه اما خیلی خنگه یعنی هیچ انعطافپذیری نداره. منم با مفرد موافقم
    قبل از انجام عملیات دیتا بیسیت connection رو چک کن.
    ADOConnection یک property داره به نام ConnectionTimeout که زمان انتظار برای ارتباط با server
    هست بعد از به پایان رسیدن این زمان و عدم ارتباط شما پیغام خطا را می بینید، در واقع سیستم
    hang نمی کنه. مقدار default آن 15 ثانیه است با توجه به ترافیک و سرعت شبکه می شه آن
    آن را تنظیم کرد.

  5. #5
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1385
    پست
    41

    نقل قول: از کجا بفهمیم ارتباط کلاینت با سرور در شبکه بعد از true شدن اتصال کانکشن قطع شده

    نقل قول نوشته شده توسط mofrad مشاهده تاپیک
    خودتون که جواب خودتون رو دادید دیگه! قبل از این که کوئری اجرا بشه چک کنید که اگر adoconnection1.connected = true اونوقت اجرا بشه. فکر نکنم چیزی غیر از این باشه؟!
    به لینک زیر هم یک سری بزنید:
    http://www.experts-exchange.com/Prog..._21320511.html

    سلام و ممنون از جواباتون
    مشکل همین جاس دیگه!!!!!!!! وقتی ارتباط قطع میشه هنوز adoconnection1.connected = true هستش و نمی تونه تشخیص بده که ارتباط قطع شده مگر اینکه یک خط دستور اجرا بشه و موقع اجرا دستور می فهمه یعنی نمی شه قبل از اجرا دستور با همین شرطی که دوستمون گفته فهمید که ارتباطش قطع شده!!! در واقع آنلاین نیس!!

    در مورد time Out هم تست کردم هیچ کمکی نمی کنه حداقل تو کاری که من انجام می دم چون موقع بستن فرم یک خط query باید اجرا بشه و در حالت معمولی فرم بازه کاربر مثلا یک ربع بعد می خواد فرم رو ببنده حالا ممکنه تو این یک ساعت ارتباط قطع و وصل شده باشه، اون موقع ست که گیر می کنه و حتی اون فرم رو هم نمی بنده و باید End task بشه!

    اینم از عیب این روشه کا کانکشنت باید باز بمونه!!

  6. #6

    نقل قول: از کجا بفهمیم ارتباط کلاینت با سرور در شبکه بعد از true شدن اتصال کانکشن قطع شده

    اینم از عیب این روشه کا کانکشنت باید باز بمونه!!
    مجبور نیستید که کانکشن رو همش باز نگه دارید. اگر کارتون طوری هست که نیاز به اتصال دائم ندارید، بعد از باز شدن دیتاست ها، خصوصیت Connection اونها رو nil کنید، و بعدش هم AdoConnection رو Disconnect کنید. البته قبل از ارسال داده به سرور، باید مجددا AdoConnection را Connect کنید، و خصوصیت Connection همه دیتاست ها رو هم مجددا مقداردهی کنید.

    البته دقت داشته باشید که استفاده از این حالت (که در اصطلاح بهش Disconnected mode یا Briefcase گفته میشه) شرایط خاص خودش رو داره. باز و بسته کردن مداوم Connection سر بار زیادی داره، و شما اگر میخواید از این روش استفاده کنید، باید سعی کنید تا حد امکان تغییرات کوچیک رو جمع کنید و با هم در زمان اتصال به سرور ارسال کنید، نه اینکه برای هر کار کوچیکی دائما به سرور وصل بشید و بعدش Disconnect کنید.

    البته یک راه دیگه اینه که قبل از ارسال داده به سرور، هر بار سرور را Ping کنید، و اگر جواب گرفتید، داده را ارسال کنید، در غیر اینصورت، سعی کنید مجددا AdoConnection را Connect کنید. البته با توجه به اینکه این کار قبل از هر انتقال داده به سرور انجام میشه، این هم سربار خاص خودش را داره.


    وَ سَيَعْلَمُ الَّذِينَ ظَلَمُوا [آل محمد حقهم] أَيَّ مُنْقَلَبٍ يَنْقَلِبُونَ - الشعراء (227)
    و ظالمین [حق آل محمد (ص) ] به زودی خواهند دانست که به کدام بازگشتگاه بازخواهند گشت.

  7. #7
    کاربر دائمی آواتار joker
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    اصفهان
    سن
    42
    پست
    1,326

    نقل قول: از کجا بفهمیم ارتباط کلاینت با سرور در شبکه بعد از true شدن اتصال کانکشن قطع شده

    میتونی یک برنامه ساده سوکت بنویسی از نوع اتصال دائم TCP
    حالا هروقت ؛ حتی 1 ثانیه این ارتباط به هر علتی قطع بشه ؛ پروتکل Tcp تشخیص میده و میتونی از این امکان برای تشخیص قطعی ها استفاده کنی ، و مجددا کانکشن را فعال کنی.

  8. #8
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1385
    پست
    41

    نقل قول: از کجا بفهمیم ارتباط کلاینت با سرور در شبکه بعد از true شدن اتصال کانکشن قطع شده

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

    باز و بسته کردن مداوم Connection سر بار زیادی داره،

    البته یک راه دیگه اینه که قبل از ارسال داده به سرور، هر بار سرور را Ping کنید، و اگر جواب گرفتید، داده را ارسال کنید، در غیر اینصورت، سعی کنید مجددا AdoConnection را Connect کنید. البته با توجه به اینکه این کار قبل از هر انتقال داده به سرور انجام میشه، این هم سربار خاص خودش را داره.
    با تشکر از همه دوستان که راهنمایی کردن خصوصا تشکر ویژه از آقای کشاورز که همیشه لطف می کنن

    تو این کار مجبورم کانکشن رو باز نگه دارم دائم و همین باعث شده که به مشکل بخورم
    کاش Ado connection می فهمید ارتباطش قطع شده و true نمی موند اون وقت با یه چکینگ کار حل می شد
    البته راه حلی هم که دوستمون گفتن (Joker) گفتن روش خوبی به نظر میاد ولی متاسفانه من تا حالا کار نکردم
    می شه راهنماییم کنید چجوری شروع کنم؟ یه سمپلی چیزی

  9. #9
    کاربر دائمی
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    اصفهان - ایران
    پست
    292

    نقل قول: از کجا بفهمیم ارتباط کلاینت با سرور در شبکه بعد از true شدن اتصال کانکشن قطع شده

    نقل قول نوشته شده توسط SirMehdi مشاهده تاپیک
    با تشکر از همه دوستان که راهنمایی کردن خصوصا تشکر ویژه از آقای کشاورز که همیشه لطف می کنن

    تو این کار مجبورم کانکشن رو باز نگه دارم دائم و همین باعث شده که به مشکل بخورم
    کاش Ado connection می فهمید ارتباطش قطع شده و true نمی موند اون وقت با یه چکینگ کار حل می شد
    البته راه حلی هم که دوستمون گفتن (Joker) گفتن روش خوبی به نظر میاد ولی متاسفانه من تا حالا کار نکردم
    می شه راهنماییم کنید چجوری شروع کنم؟ یه سمپلی چیزی
    سلام دوستان
    می دونم این تاپیک خیلی قدیمیه، اما اینجا ظاهرا به نتیجه ای نرسیده. من هم این مشکل را دارم.
    قبل از اجرای هر کوئری اول کانکشن را چک می کردم اما مشکل اینه که اگر کانکشن وصل باشه و در حین اجرای برنامه قطع بشه با adoconnection.connected مقدار true بر میگرداند و تازه وقتی adoquery باز شد یا execute شد خطا میدهد
    چه کار کنم؟

  10. #10
    کاربر دائمی
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    اصفهان - ایران
    پست
    292

    نقل قول: از کجا بفهمیم ارتباط کلاینت با سرور در شبکه بعد از true شدن اتصال کانکشن قطع شده

    نقل قول نوشته شده توسط masoode مشاهده تاپیک
    سلام دوستان
    می دونم این تاپیک خیلی قدیمیه، اما اینجا ظاهرا به نتیجه ای نرسیده. من هم این مشکل را دارم.
    قبل از اجرای هر کوئری اول کانکشن را چک می کردم اما مشکل اینه که اگر کانکشن وصل باشه و در حین اجرای برنامه قطع بشه با adoconnection.connected مقدار true بر میگرداند و تازه وقتی adoquery باز شد یا execute شد خطا میدهد
    چه کار کنم؟
    آیا لازمه این موضوع که اینجا حل نشده باقی مانده را دوباره تاپیک جدید بزنم؟

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •