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

نام تاپیک: بدست آوردن نام کلاینتی که Disconnect شده

  1. #1
    کاربر تازه وارد
    تاریخ عضویت
    مرداد 1385
    محل زندگی
    تهران
    پست
    71

    بدست آوردن نام کلاینتی که Disconnect شده

    با سلام
    من دارو یه برنامه با ClientSocket و ServerSocket می نویسم که چند تا کلاینت به سرور متصل می شن.
    این کلاینتها مشخصاتشون تو یک لیست قرار می کیره. در این لیست :
    ServerSocket1.Socket.Connections
    که تعداد کلاینتهای متصل هم از : ServerSocket1.Socket.ActiveConnections بدست می آد.
    وقتی کلاینتی Disconnect بشه رویداد OnClientDisconnect در سرور اجرا می شه.
    می خواستم بدونم چطور میشه فهمید کدوم کلاینت DC شده. یعنی چطور می تونم اندیس کلاینتی که DC شده رو تو همون لیست سرور که عرض کردم بدست بیارم.
    ممنون می شم اگه راهنماییم کنین.
    با تشکر قبلی.

  2. #2
    کاربر تازه وارد
    تاریخ عضویت
    مرداد 1385
    محل زندگی
    تهران
    پست
    71

    نقل قول: بدست آوردن نام کلاینتی که Disconnect شده

    از دوستان کسی نمی تونه کمکم کنه؟؟
    ممنون می شم اگه راهنماییم کنید.

  3. #3
    کاربر تازه وارد
    تاریخ عضویت
    مرداد 1385
    محل زندگی
    تهران
    پست
    71

    نقل قول: بدست آوردن نام کلاینتی که Disconnect شده

    پس اجازه بدین خودم شروع کنم
    یه راهش اینه که Client موقع DC شدن یه پیغام به سرور بفرسته و در آخر پیغام فرضا IP خودشو بفرسته.

    Disconnect' + Client_IP_Address + #0 // Disconnect192.168.2.12'
    وقتی سرور این پیغام و میبینه ، IP فرستاده شده رو که در انتهای پیام هست می گیره و در لیست خودش دنبال این IP می گرده و هر جا این IP رو دید همون اندیس رو بر می گردونه.
    Var
    ;Data : String
    ;PreCode : String
    ;IP : String

    Begin
    ;Data := Socket.RecieveText
    ;(Command := Copy(Data,1,10

    If Command ='Disconnect' Then
    Begin
    ;(IP := Copy(Data,11,15
    For i:=0 To ServerSocket1.Socket.ActiveConnections -1 Do
    If ServerSocket1.Socket.Connections[i].RemoteAddress = IP Then
    Begin
    DC_Index := i; //This is The answer
    ;Break
    ;End
    ;End
    ;End
    این کد رو تو OnClientDisconnect در ServerSocket1 مینویسیم.
    ولی مشکل این روش اینه که فقط در صورتی درست کار می کنه که کلاینت موفق بشه این پیغام رو بفرسته. حالا اگه کلاینت به هر دلیلی موفق نشه این پیغاو بفرسته، سرور هم نمی تونه اندیس کلاینتی که DC شده رو بدست بیاره.
    مثلا اگه کامپیوتر کلاینت بصورت ناگهانی Reset یا خاموش بشه.

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

  4. #4
    کاربر دائمی آواتار aserfg
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    Asp+.net
    پست
    617

    نقل قول: بدست آوردن نام کلاینتی که Disconnect شده

    سلام دوست گرامي من با اين دو كامپوننت زياد آشنا نيستم ولي يه سؤال داشتم چرا با ايندي كار نمي كني به عقيده من خيلي مي تونه كارت رو راحت كنه مثلا براي همين مشكلي كه داري يه خط كد كافي بود و نيازي نبود كلاينت به سرور چيزي ارسال كنه و اصلا كار جالبي نيست.

  5. #5
    کاربر تازه وارد
    تاریخ عضویت
    مرداد 1385
    محل زندگی
    تهران
    پست
    71

    نقل قول: بدست آوردن نام کلاینتی که Disconnect شده

    سلام. می دونم خیلی راحت تره. آخه تعریف پروژه اینه که با این کامپوننت ها نوشته بشه. وگرنه همین برنامه رو من خودم با TCPServer و TCPClient از سربرگ Indy نوشتم.

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

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