1. مهمان گرامی، جهت ارسال پست، دانلود و سایر امکانات ویژه کاربران عضو، ثبت نام کنید.
    بستن اطلاعیه

آموزش ساخت تروجان با ویژوال بیسیک

شروع موضوع توسط minaaa ‏3/9/13 در انجمن Visual Basic

  1. کاربر پیشرفته

    تاریخ عضویت:
    ‏9/12/10
    ارسال ها:
    19,795
    تشکر شده:
    6,456
    امتیاز دستاورد:
    113
    [h=2]آموزش ساخت تروجان با ویژوال بیسیک[/h]
    ﺗﺮﻭﺟﺎﻥ ﻫﺎ (‪ (Trojans‬ﻳﻜﻲ ﺍﺯ ﺟﺎﻟﺒﺘﺮﻳﻦ ﻭ ﺩﺭ ﻋﻴﻦ ﺣﺎﻝ ﺧﻼﻗﺎﻧﻪ ﺗﺮﻳﻦ ﺭﻭﺷﻬﺎﻱ ﻧﻔﻮﺫ ﺑﻪ ﻛﻼﻳﻨﺖ ﻫـﺎ می باشد . ﻣـﻦ‬ ‫ﻫﻤﻴﺸﻪ ﺑﻪ ﺍﻳﻦ ﻣﺒﺤﺚ ﻋﺸﻖ ﻣﻲ ﻭﺭﺯﻳﺪﻡ ﻭ ﻟﻲ ﺑﻌﻀﻲ ﺍﺯ ﺩﻭﺳﺘﺎﻥ ﺑﺎ ﻛﺎﺭﻫﺎﻱ ﺑﭽﻪ ﮔﺎﻧـﻪ ﺧـﻮﺩ ﺍﺭﺯﺵ ﻭ ﻛـﺎﺭﺍﻳﻲ ﺍﻳـﻦ‬ ‫ﺑﺮﻧﺎﻣﻪ ﻫﺎ ﺭﺍ ﺑﻪ ﭘﺎﻳﻴﻦ ﺗﺮﻳﻦ ﺳﻄﺢ ﺧﻮﺩ ﺗﻨﺰﻝ ﺩﺍﺩﻩ ﺍﻧﺪ .‬ ‫ﻣﻦ ﺳﻌﻲ ﺩﺍﺭﻡ ﻳﻚ ﺁﻣﻮﺯﺵ ﺍﺯ ﻧﻮﺷﺘﻦ ﻳﻚ ﺗﺮﻭﺟﺎﻥ ﺳﺎﺩﻩ ﻛﻪ ﻳﻚ ﭘﻴﻐﺎﻡ ﺭﺍ ﺑﺮﺍﻱ ﻗﺮﺑﺎﻧﻲ ﻣﻴﻔﺮﺳﺘﻨﺪ ، ﺩﻫﻢ .‬

    ‫۱ – ﺍﺑﺘﺪﺍ ﻭﻳﮋﻭﺍﻝ ﺑﻴﺴﻴﻚ ﺭﺍ ﺑﺎﺯ ﻛﺮﺩﻩ ﻭ ﺳﭙﺲ ﭘﺮﻭﮊﻩ ﺍﺳﺘﺎﻧﺪﺍﺭﺩ ﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻛﻨﻴﺪ .‬
    ایجاد پروژه ی Standard EXE



    ‫۲ – ﺳﭙﺲ ﺩﺭ ﻗﺴﻤﺖ ﺍﺑﺰﺍﺭ ﻛﻠﻴﻚ ﻛﺮﺩﻩ ﻭ ﺳﭙﺲ ﮔﺰﻳﻨﻪ ‪ components‬ﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻛﻨﻴﺪ .‬
    انتخاب گزینه ی components



    ‫۳ – ﺍﺯ ﺻﻔﺤﻪ ﺍﻱ ﻛﻪ ﺑﺎﺭ می شود ﮔﺰﻳﻨﻪ ۶٫۰ ‪ Microsoft Winsock Control‬ﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻛﻨﻴﺪ .‬
    انتخاب گزینه ی 0.6 ‪ Microsoft Winsock Control


    ‫۴ – ﺧﻮﺏ ﺑﻌﺪ ﺍﺯ ﺯﺩﻥ ‪ ، ok‬ﺩﻭ ﻛﺎﻣﭙﻴﻮﺗﺮ ﻛﻮﭼﻚ ﭘﺸﺖ ﺳﺮ ﻫﻢ ﻛﻨﺎﺭ ﻧﻮﺍﺭ ﺍﺑﺰﺍﺭ ﻇﺎﻫﺮ ﻣﻴﺸﻮﺩ .‬

    ‫۵ – ﺣﺎﻻ ﺭﻭﻱ ﺁﻥ ﻫﺎ ﻛﻠﻴﻚ ﻛﺮﺩﻩ ﻭ ﻳﻜﻲ ﺍﺯ ﺁﻧﻬﺎ ﺭﺍ ﺩﺭ ﺻﻔﺤﻪ ﻗﺮﺍﺭ ﺩﻫﻴﺪ ﻭ ﺳﭙﺲ ﻧﺎﻡ ﺁﻥ ﺭﺍ ﺑﻪ TCP1 ﺗﻐﻴﻴﺮ ﺩﻫﻴﺪ .‬

    ‫ﻛﻤﻲ ﺗﻮﺿﻴﺢ : ‪ Winsock‬ﻳﻜﻲ ﺍﺯ ﺍﺑﺰﺍﺭ ﻫﺎﻱ ﺑﺮﻗﺮﺍﺭﻱ ﺍﺭﺗﺒﺎﻁ ﺍﺯ ﻃﺮﻳـﻖ پورت ﻫـﺎﻱ ‪ UDP‬ﻭ ‪ TCP‬ﺑـﻴﻦ ﺳـﺮﻭﺭ ﻭ‬ ‫ﻛﻼﻳﻨﺖ ﺩﺭ ‪ vb‬ﻣﻴﺒﺎﺷﺪ . ﺗﻮﺟﻪ ﻛﻨﻴﺪ ﻛﻪ ﺑﺮﺍﻱ ﻧﻮﺷﺘﻦ ﺑﺎﻓﺮ ﺍﻭﺭ ﻓﻠﻮ ﻫﺎ ﻧﻴﺰ ﺩﺭ ﻭﻳﮋﻭﺍﻝ ﺑﻴﺴﻴﻚ ﻧﻴﺰ ﺍﺯ ﺍﻳﻦ ﻛﺎﻣﭙﻮﻧﻨـﺖ‬ ‫ﺍﺳﺘﻔﺎﺩﻩ ﻣﻴﻜﻨﻨﺪ . ﻭ ﺗﻘﺮﻳﺒﺎ ﺗﻤﺎﻡ ﺍﺭﺗﺒﺎﻃﺎﺕ ﺍﺳﺘﺎﻧﺪﺍﺭﺩ ﺩﺭ ‪ vb‬ﺑﻪ ﺍﻳﻦ ﻃﺮﻳﻖ ﺍﻧﺠﺎﻡ ﻣﻴﺸﻮﺩ .‬

    ‫۶ – ﺣﺎﻻ ﻳﻚ ﺑﺎﺭ ﺩﻳﮕﺮ ‪ vb‬ﺭﺍ ﺑﺎﺯ ﻛﺮﺩﻩ ﻭ ﻳﻚ ﭘﺮﻭﮊﻩ ﺩﻳﮕﺮ ﻧﻴﺰ ﺗﻌﺮﻳﻒ ﻛﻨﻴﺪ .ﻭ ﻣﺮﺍﺣﻞ ۱ ﺗﺎ ۵ ﺭﺍ ﺭﻭﻱ ﺁﻥ ﻫﻢ ﺍﻧﺠﺎﻡ‬ ‫ﺩﻫﻴﺪ . ﺗﻮﺟﻪ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻴﺪ ﻛﻪ ﻳﻜﻲ ﺍﺯ ﺍﻳﻦ ﭘﺮﻭﮊﻩ ﻫﺎ ﺑﺮﺍﻱ ﺳﺮﻭﺭ ﻭ ﺩﻳﮕﺮﻱ ﺑﺮﺍﻱ ﻛﻼﻳﻨﺖ ، ﺗﺮﻭﺟﺎﻥ ﻣﺎ ﻫﺴﺘﻨﺪ.‬

    ﺳﺎﺧﺖ ‪: Client‬‬
    ‫ﻫﻤﺎﻥ ﻃﻮﺭ ﻛﻪ ﻣﻴﺪﺍﻧﻴﺪ ﻳﻚ ﻧﺮﻭﺟﺎﻥ ﺩﺍﺭﺍﻱ ﺩﻭ ﻗﺴﻤﺖ ﺍﺻﻠﻲ ﺍﺳﺖ ، ‪ Server , Client‬ﻭ ﻣﺎ ﺑﺎﻳﺪ ﺍﻳﻦ ﺩﻭ ﺭﺍ ﺟﺪﺍ‬ﮔﺎﻧﻪ ﺑﺴﺎﺯﻳﻢ ، ﺍﻟﺒﺘﻪ ﻣﻴﺸﻮﺩ ، ﺳﺮﻭﺭ ﻭ ﻛﻼﻳﻨﺖ ﺑﺎ ﻫﻢ ﺑﺎﺷﻨﺪ ﻭﺍﻱ ﺑﻪ ﻋﻠﺖ ﭘﻴﭽﻴﺪﻩ ﺷﺪﻥ ﺑﺤﺚ ﻭ ﺧﺎﺭﺝ ﺑﻮﺩﻥ ﺍﺯ‬ ‫ﺣﻮﺻﻠﻪ ﻣﻘﺎﻟﻪ ، ﺑﻪ ﺍﻳﻦ ﻣﻮﺿﻮﻉ ﻧﻤﻲ ﭘﺮﺩﺍﺯﻳﻢ .‬
    ‫ﺧﻮﺏ ﺣﺎﻻ ﻛﺎﺭ ﺭﺍ ﺷﺮﻭﻉ ﻣﻴﻜﻨﻴﻢ :‬

    ‫۱ – ﻳﻚ ﺍﺯ ﺩﻭ ﭘﺮﻭﮊﻩ ﺍﻱ ﺭﺍ ﻛﻪ ﺑﺎﺯ ﻛﺮﺩﻩ ﺍﻳﺪ ﺍﻧﺘﺨﺎﺏ ﻛﻨﻴﺪ ﻭ ﻫﻤﺎﻧﻨﺪ ﺷﻜﻞ ﺯﻳﺮ ﺑﺮﺍﻱ ﺁﻥ … , ‪command , text‬‬ ‫ﺗﻌﺮﻳﻒ ﻛﻨﻴﺪ :‬
    ‫ﺍﺳﻢ ﻫﺮ ﻳﻚ ﺭﺍ ﻃﺒﻖ ﺁﻧﭽﻪ ﻛﻪ ﺟﻠﻮﻱ ﺁﻧﻬﺎ ﻧﻮﺷﺘﻪ ﺷﺪﻩ ، ﺑﻨﻮﻳﺴﻴﺪ. (ﺗﺎ ﺍﻳﻨﺠﺎ ﻛﻪ ﻣﺸﻜﻠﻲ ﻭﺟﻮﺩ ﻧﺪﺍﺭﺩ)‬ ‫ﺣﺎﻻ ﻧﻮﺑﺖ ﺑﻪ ﻛﺪ ﻧﻮﻳﺴﻲ ﺑﺮﺍﻱ ﻫﺮ ﻳﻚ ﺍﺯ ﻣﻮﺍﺭﺩ ﺑﺎﻻﺳﺖ :‬
    ‫ﺗﻮﺿﻴﺢ ﻣﻬﻢ : ﻳﻜﻲ ﺍﺯ ﻣﻬﻤﺘﺮﻳﻦ ﻗﺴﻤﺖ ﻫﺎﻱ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ ﺗﺮﻭﺟﺎﻥ ﻫﺎ ﺭﻓﻊ ﺍﺷﻜﺎﻝ ﺩﺭ ﺁﻧﻬﺎﺳﺖ ، ﭼﻮﻥ ﺩﺭ‬ ‫ﺻﻮﺭﺕ ﺑﺮﻭﺯ ﻣﺸﻜﻞ ﺗﺮﻭﺟﺎﻥ ﺑﻪ ﻃﻮﺭ ﺍﺗﻮﻣﺎﺗﻴﻚ ﺍﺯ ﻛﺎﺭ ﺑﺎﺯ ﺧﻮﺍﻫﺪ ﺍﻳﺴﺘﺎﺩ .‬
    ‫ﻣﺎ ﺑﺮﺍﻱ ﺍﻳﻦ ﻛﺎﺭ ﺑﺎﻳﺪ ﺍﺯ ‪ on error‬ﺍﺳﺘﻔﺎﺩﻩ ﻛﺮﺩ ﻣﺜﻼ :‬

    کد PHP:
    ‫۱ ‪On error goto‬‬
    ‫…‬
    ‫‪Exit sub‬‬
    :۱‬
    [[On error msg‬‬
    ‫‪End sub




    ‫۱-ﻛﻠﻴﺪ ‪: connect‬‬

    کد PHP:
    () ‪Private Sub connect_Click‬‬
    ‫‪If
    (tcp1.State <> sckClosed) Then tcp1.Close‬‬
    ‫۰
    = ‪tcp1.LocalPort‬‬
    ‫۱۰۱۹
    ,‪tcp1.connect ip.Text‬‬
    ‫‪End Sub‬‬


    ﺩﺭ ﺧﻂ ﺍﻭﻝ ﺳﻮﻛﺖ ﺭﺍ ﭼﻚ ﻣﻴﻜﻨﺪ ﻭ ﺍﮔﺮ ‪ Winsock‬ﺑﻲ ﻛﺎﺭ ﺑﻮﺩ ﺑﻪ ﻛﺎﺭ ﺧﻮﺩ ﺍﺩﺍﻣﻪ ﻣﻲ ﺩﻫﺪ . ﻣﻨﻈﻮﺭ ﺍﺯ ﺑﻲ ﻛﺎﺭ‬ ‫ﺑﻮﺩﻥ ‪ Winsock‬ﻳﻌﻨﻲ ، ﻭﻳﻦ ﺳﻮﻛﺖ ﻣﺎ ﺗﻮﺳﻂ ﻗﺴﻤﺘﻲ ﺩﻳﮕﺮ ﺍﺯ ﺑﺮﻧﺎﻣﻪ ﺍﺳﺘﻔﺎﺩﻩ ﻧﺸﻮﺩ ﻭ ﺍﮔﺮ ﭼﻨﻴﻦ ﻣﻮﺭﺩﻱ ﭘﻴﺶ‬ ‫ﺑﻴﺎﻳﺪ ﺍﺭﺗﺒﺎﻁ ﺁﻥ ﺭﺍ ﻗﻄﻊ ﻣﻴﻜﻨﺪ ﻭ ﺁﻥ ﺭﺍ ﺑﺮﺍﻱ ﺍﺳﺘﻔﺎﺩﻩ ﺧﻮﺩ ﺣﺎﻇﺮ ﻣﻴﻜﻨﺪ .‬
    ‫ﺩﺭ ﺧﻂ ﺑﻌﺪﻱ ﻧﺸﺎﻥ ﻣﻴﺪﻫﺪ ﻛﻪ ﺍﺭﺗﺒﺎﻁ ﻣﺎ ﺑﻪ ﺻﻮﺭﺕ ﺭﻳﻤﻮﺕ ﺍﺳﺖ . ﻭ ﺩﺭ ﺧﻂ ﺳﻮﻡ ﻫﻢ ﺗﻤﺎﺱ ﺭﺍ ﺑﺮ ﺭﻭﻱ ‪ IP‬ﻛﻪ‬ ‫ﻣﺎ ﺩﺭ ‪ IP.text‬ﻭﺍﺭﺩ ﻛﺮﺩﻳﻢ ﻭ ﺑﺮ ﺭﻭﻱ ﭘﻮﺭﺕ ۱۰۱۹ ﺗﻨﻈﻴﻢ ﻛﺮﺩﻩ ﻭ ﺍﺭ ﺗﺒﺎﻁ ﺭﺍ ﺑﺮ ﻗﺮﺍﺭ ﻣﻴﻜﻨﺪ.‬
    – ﻛﻠﻴﺪ ‪: Disconnect‬‬
    کد PHP:
    () ‪Private Sub disconnetc_Click‬‬
    ‫‪tcp1
    .Close‬‬
    ‫”ﺍﺭﺗﺒﺎﻁ ﻗﻄﻊ ﺷﺪ”
    = ‪AlertTXT.Caption‬‬
    ‫‪AlertTXT
    .BackColor = &H8080FF‬‬


    ‫‪End Sub‬‬

    ‫ﺩﺭ ﺍﻳﻨﺠﺎ ﺩﺭ ﺧﻂ ﺍﻭﻝ ﺍﺭﺗﺒﺎﻁ ﺭﺍ ﻗﻄﻊ ﻣﻴﻜﻨﺪ ﻭ ﺩﺭ ﺧﻂ ﺩﻭﻡ ﻭ ﺳﻮﻡ ﺑﻪ ﺗﺮﺗﻴﺐ ﻋﻨﻮﺍﻥ‪ alerttxt‬ﺭﺍ ﺗﻐﻴﻴﺮ ﺩﺍﺩﻩ ﻭ ﺭﻧﮓ‬ ‫ﺁﻥ ﺭﺍ ﺑﻪ ﺭﻧﮓ ﺻﻮﺭﺗﻲ ﻛﻢ ﺭﻧﮓ ﺩﺭ ﻣﻲ ﺁﻭﺭﺩ .‬

    ‫۳- ‪: tcp1_Close‬‬
    ‫ﻧﻜﺘﻪ ﺍﻱ ﻛﻪ ﻧﺒﺎﻳﺪ ﻓﺮﺍﻣﻮﺵ ﻛﻨﻴﻢ ﺍﻳﻦ ﺍﺳﺖ ﻛﻪ ﺍﮔﺮ ﻳﻚ ﺩﻓﻌﻪ ﺍﺭﺗﺒﺎﻁ ﻗﻄﻊ ﺷﺪ ﻣﺎ ﭼﮕﻮﻧﻪ ﻣﺘﻮﺟﻪ ﺷﻮﻳﻢ ﻛﻪ ﺍﺭﺗﺒﺎﻁ ﻗﻄﻊ‬ ‫ﺷﺪﻩ ، ﺍﻳﻦ ﻣﺸﻜﻞ ﻳﻚ ﺭﺍﻩ ﺣﻞ ﺳﺎﺩﻩ ﺩﺍﺭﺩ ﻭﻭ ﺁﻥ ﻫﻢ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺍﻣﻜﺎﻧﺎﺕ ‪ close‬ﺩﺭ ‪ Winsock‬ﻣﻴﺒﺎﺷﺪ . ﺑﻪ ﺍﻳﻦ‬ ‫ﺻﻮﺭﺕ ﻛﻪ ﺩﺭ ﺷﻜﻞ ﻣﻴﺒﻴﻨﻴﺪ ﺷﻤﺎ ﺑﺎﻳﺪ ﻭﺍﺭﺩ ﻗﺴﻤﺖ ﻛﺪ ﻧﻮﻳﺴﻲ ﺷﺪﻩ ﻭ ﺍﺯ ﺯﺑﺎﻧﻪ ﺧﺼﻮﺻﻴﺎﺕ ۱‪ tcp‬ﻗﺴﻤﺖ ‪ close‬ﺭﺍ‬ ‫ﺍﻧﺘﺨﺎﺏ ﻛﻨﻴﺪ :‬
    ‫ﻭﺑﻌﺪ ﺁﻥ ﻳﻚ ‪ Private Sub‬ﺑﺎ ﻧﺎﻡ :‬

    ()‪Private Sub tcp1_Close‬‬

    ‫ﺭﺍ ﻣﺸﺎﻫﺪﻩ ﺧﻮﺍﻫﻴﺪ ﻛﺮﺩ . ﺣﺎﻝ ﻛﺪ ﻫﺎﻱ ﺯﻳﺮ ﺍﺭ ﻭﺍﺭﺩ ﻣﻴﻜﻨﻴﻢ :‬
    کد PHP:
    ()‪Private Sub tcp1_Close‬‬
    ‫“ارﺗﺒﺎط ﺑﺮﻗﺮارﻧﯿﺴﺖ و ﻗﻄﻊ ﺷﺪ”
    = ‪AlertTXT.Caption‬‬
    ‫‪AlertTXT
    .BackColor = &H8080FF‬‬
    ‫‪tcp1
    .Close‬‬
    ‫‪End Sub‬‬


    ‫ﻛﻪ ﺍﺣﺘﻴﺎﺝ ﺑﻪ ﺗﻮﺿﻴﺢ ﺍﺿﺎﻓﻪ ﻫﻢ ﻧﺪﺍﺭﺩ !‬
    ‫۴-‪: tcp1_Connect‬‬
    ‫ﺍﻳﻦ ﻗﺴﻤﺖ ﺭﺍ ﻫﻢ ﻫﻤﺎﻧﻨﺪ ﻗﺴﻤﺖ ﻗﺒﻞ ﻃﻲ ﻣﻴﻜﻨﻢ ﻭ ﺍﻳﻦ ﺑﺎﺭ ﺍﺯ ﺁﻥ ﻣﻨﻮﻱ ﻛﺸﻮﻳﻲ ﮔﺰﻳﻨﻪ ‪ connect‬ﺭﺍ ﺍﻧﺘﺨﺎﺏ‬ ‫ﻣﻴﻜﻨﻴﻢ . ﺣﺎﻝ ﺑﻪ ﻛﺪ ﻫﺎﻱ ﺍﻳﻦ ﻗﺴﻤﺖ ﺩﻗﺖ ﻛﻨﻴﺪ :‬
    کد PHP:
    () ‪Private Sub tcp1_Connect‬‬
    ‫”ارﺗﺒﺎط ﺑﺮﻗﺮار ﺷﺪ”
    = ‪AlertTXT.Caption‬‬
    ‫۸۰ ‪AlertTXT
    .BackColor = &H80FF‬‬
    ‫‪End Sub‬‬


    ‫ﺧﻮﺏ ، ﺍﻳﻦ ﻗﺴﻤﺖ ﺍﺯ ﻛﺪ ﻫﺎ ﺩﺭ ﺍﺻﻞ ﻫﻨﮕﺎﻣﻲ ﻛﻪ ﺍﺭﺗﺒﺎﻁ ﺑﺎ ﻣﻮﻓﻘﻴﺖ ﺍﻧﺠﺎﻡ ﺷﺪ ﺑﻪ ﻣﺎ ﺧﺒﺮ ﻣﻴﺪﻫﺪ ﻭ ﺭﻧﮓ ‪alerttxt‬‬ ‫ﺭﺍ ﺑﻪ ﺭﻧﮓ ﺳﺒﺰﺭﻭﺷﻦ ﺩﺭ ﻣﻲ ﺁﻭﺭﺩ .‬

    ‫۵-ﻛﻠﻴﺪ ‪: Send‬‬
    ‫ﺍﻳﻦ ﺁﺧﺮﻳﻦ ﺑﺨﺶ ﺍﺯ ﻛﺪ ﻧﻮﻳﺴﻲ ﺑﺮﺍﻱ ﻗﺴﻤﺖ ﻛﻼﻳﻨﺖ ﻣﻴﺒﺎﺷﺪ . ﻣﺎ ﺩﺭ ﺍﻳﻨﺠﺎ ﭘﺲ ﺍﺯ ﺑﺮ ﻗﺮﺍﺭﻱ ﺍﺭﺗﺒﺎﻁ ﻣﻲ ﺁﻳﻴﻢ ﻭ ﻳﻚ‬ ‫ﺳﺮﻱ ﺍﻃﻼﻋﺎﺕ (ﺍﺳﺘﺮﻳﻨﮓ) ﻛﻪ ﺩﺭ ‪ send text‬ﻧﻮﺷﺘﻪ ﺍﻳﻢ ﺭﺍ ﺑﻪ ﺳﻤﺖ ﺳﺮﻭﺭ ‪ send‬ﻣﻴﻜﻨﻴﻢ . ﺗﻮﺟـﻪ ﺷـﻮﺩ ﻛـﻪ ﻣـﺎ‬ ‫ﻣﻴﺘﻮﺍﻧﻴﻢ ﺩﺭ ﺳﺮﻭﺭ ﺣﺘﻲ ﺍﻳﻦ ﺍﻃﻼﻋﺎﺕ ﺭﺍ ﺗﺠﺰﻳﻪ ﻭ ﺗﺤﻠﻴﻞ ﻛﻨﻴﻢ ﻭ ﻃﺒﻖ ﺩﺭﺧﻮﺍﺳﺘﻲ ﻛـﻪ ﻣـﺎ ﻣﻴﻔﺮﺳـﺘﻴﻢ ، ﺳـﺮﻭﺭ ﻛـﺎﺭ‬ ‫ﺧﺎﺻﻲ ﺭﺍ ﺍﻧﺠﺎﻡ ﺩﻫﺪ .‬

    کد PHP:
    () ‪Private Sub send_Click‬‬
    ‫‪On Error Resume Next‬‬
    ‫‪a
    $ = sendtext‬‬
    ‫$‪tcp1
    .SendData a‬‬
    ‫‪send
    .SetFocus‬‬
    ‫‪End Sub‬‬


    ‫ﺩﺭ ﺧﻂ ﻧﺨﺴﺖ ﻣﺎ ﺑﺮﺍﻱ ﺍﻳﻨﻜﻪ ﻫﺮ ﮔﻮﻧﻪ ﺍﺷﺘﺒﺎﻫﻲ ﻛﻪ ﺩﺭ ﻫﻨﮕﺎﻣﻪ ﺯﺩﻥ ﺍﻳﻦ ﺩﻛﻤـﻪ ﺑـﻪ ﻭﺟـﻮﺩ ﻣـﻲ ﺁﻳـﺪ ﺭﺍ ﻧﺎﺩﻳـﺪﻩ‬ ‫ﺑﮕﻴﺮﻳﻢ ﺍﺯ ﺩﺳﺘﻮﺭ ‪On Error Resume Next‬ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻴﻜﻨﻴﻢ . ﺍﻳـﻦ ﺩﺳـﺘﻮﺭ ﺗﻤـﺎﻡ ﺧﻄﺎﻫـﺎ ﺭﺍ ﻧﺎﺩﻳـﺪﻩ ﮔﺮﻓﺘـﻪ ﻭ‬ ‫ﺩﻭﺑﺎﺭﻩ ﺑﻪ ﺣﺎﻟﺖ ﺍﻭﻟﻴﻪ ﺑﺮ ﻣﻴﮕﺮﺩﺩ .‬
    ‫ﺩﺭ ﺧﻂ ﺩﻭﻡ ﻣﺎ ﻳﻚ ﺍﺳﺘﺮﻳﻨﮓ ﺗﻌﺮﻳﻒ ﻛﺮﺩﻩ ﺍﻳﻢ ﻭ ﺍﻳﻦ ﺍﺳﺘﺮﻳﻨﮓ ﺭﺍ ﺑﻪ ‪ Sendtext‬ﻣﺮﺑﻮﻁ ﺳﺎﺧﺘﻪ ﺍﻳﻢ . ﻳﻌﻨـﻲ ﺍﺯ ﺍﻳـﻦ‬ ‫ﺑﻪ ﺑﻌﺪ ﻫﺮ ﭼﻴﺰﻱ ﻛﻪ ﺩﺭ ‪ Sendtext‬ ﻭﺍﺭﺩ ﻛﻨﻴﻢ ﺩﺭ ﺍﻳﻦ ﺍﺳﺘﺮﻳﻨﮓ ﻗﺮﺍﺭ ﻣﻲ ﮔﻴﺮﺩ .‬
    ‫ﺩﺭ ﺧﻂ ﺳﻮﻡ ﻫﻢ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺧﺼﻮﺻﻴﺎﺕ ‪ send‬ﺩﺍﺩﻩ ﻫﺎ ﺩﺭ ‪ Winsock‬ﺍﺳﺘﺮﻳﻨﮓ $‪ a‬ﺭﺍ ﺍﺭﺳﺎﻝ ﻣﻴﻜﻨﻴﻢ .‬
    ‫ﺩﺭ ﺧﻂ ۴ ﻫﻢ . ﺩﻭﺑﺎﺭﻩ ﻛﻠﻴﺪ ‪ send‬ﺭﺍ ﺑﻪ ﺣﺎﻟﺖ ﺍﻭﻟﻴﻪ ﺑﺮ ﻣﻲ ﮔﺮﺩﺍﻧﻴﻢ .‬

    ‫ﻧﻜﺘﻪ ﻣﻬﻢ : ﺩﺭ ﺗﺮﻭﺟﺎﻥ ﻫﺎﻱ ﻣﻌﻤﻮﻟﻲ ، ﺩﺭ ﺍﺻﻞ ﻫﻴﭻ ﭼﻴﺰ ﺧﺎﺻﻲ ﺑﻪ ﺟﺰ ﭼﻨﺪ ﺩﺳﺘﻮﺭ ﺳﺎﺩﻩ ﺑﻪ ﺳﻤﺖ ﺳﺮﻭﺭ ﻓﺮﺳﺘﺎﺩﻩ‬ ‫ﻧﻤﻲ ﺷﻮﺩ ، ﻭ ﺑﻪ ﻫﻤﻴﻦ ﺩﻟﻴﻞ ﺍﺳﺖ ﻛﻪ ﺳﺮﻋﺖ ﻋﻜﺴﻞ ﺍﻟﻌﻤﻞ ﺩﺳﺘﻮﺭﺍﺕ ﺩﺭ ﺍﻳﻦ ﻧﻮﻉ ﺍﺭﺗﺒﺎﻃﺎﺕ ﺑﺴﻴﺎﺭ ﺯﻳﺎﺩ ﺍﺳﺖ .‬
    ‫ﺗﻮﺟﻪ : ﺩﺭ ﺻﻮﺭﺗﻲ ﻛﻪ ﺑﺨﻮﺍﻫﻴﻢ ﺍﻧﺘﻘﺎﻝ ﻓﺎﻳﻞ ﻫﻢ ﺩﺍﺷﺘﻪ ﺑﺎﺷـﻴﻢ ﺩﺭ ﺁﻥ ﺻـﻮﺭﺕ ﺑﺎﻳـﺪ ﺩﺭ ﻧﺤـﻮﻩ ﻛـﺪ ﻧﻮﻳﺴـﻲ ﺧـﻮﺩ‬ ‫ﺗﻐﻴﻴﺮﺍﺕ ﻋﻤﺪﻩ ﺍﻱ ﺻﻮﺭﺕ ﺩﻫﻴﻢ .‬

    ‫ﺳﺎﺧﺖ ‪: Server‬‬

    ‫ﺍﻳﻦ ﻗﺴﻤﺖ ﺩﺭ ﺍﺻﻞ ﻫﻤﺎﻥ ﭼﻴﺰﻳﺴﺖ ﻛﻪ ﺑﻪ ﻗﺮﺑﺎﻧﻲ ﺩﺍﺩﻩ ﻣﻴﺸﻮﺩ .‬
    ‫۱ – ﺑﺮﺍﻱ ﺳﺎﺧﺖ ﺳﺮﻭﺭ ﺑﻪ ﭼﻴﺰ ﺯﻳﺎﺩﻱ ﺍﺣﺘﻴﺎﺝ ﻧﺪﺍﺭﻳﻢ . ﺍﺑﺘﺪﺍ ﻳﻚ ﻓﻮﺭﻡ ﺍﺳﺘﺎﻧﺪﺍﺭﺩ ﺍﻧﺘﺨﺎﺏ ﻣﻴﻜﻨﻴﻢ :‬



    ‫۲ – ﺑﺮﺍﻱ ﺍﻳﻨﻜﻪ ﻫﻨﮕﺎﻣﻲ ﻛﻪ ﺳﺮﻭﺭ ﺍﺟﺮﺍ ﻣﻴﺸﻮﺩ ، ﻓﻮﺭﺍ ﻳﻚ ﭘﻮﺭﺕ ﺭﺍ ﺑﺎﺯ ﻛﺮﺩﻩ ﻭ ﺑﻪ ﺁﻥ ﭘﻮﺭﺕ ﮔﻮﺵ ﺩﻫﺪ ﻣﺎ ﺑﺎﻳﺪ ﺑﻪ‬ ‫‪ (Winsock) – tcp1‬ﺩﺳﺘﻮﺭ ﺩﻫﻴﻢ ﺗﺎ ﺑﻪ ﭘﻮﺭﺕ ﻣﻮﺭﺩ ﻧﻈﺮ ﻣﺎ ﮔﻮﺵ ﻛﻨﺪ ، ﺑﻪ ﻫﻤﻴﻦ ﺩﻟﻴﻞ ﺩﺭ ‪ form_load‬ﺍﻳﻦ‬ ‫ﻛﺪ ﻫﺎ ﺭﺍ ﻭﺍﺭﺩ ﻣﻴﻜﻨﻴﻢ :‬
    کد PHP:
    () ‪Private Sub Form_Load‬‬
    ‫‪On Error Resume Next‬‬
    ‫۱۰۱۹
    = ‪tcp1.LocalPort‬‬
    ‫‪tcp1
    .Listen‬‬
    ‫‪End Sub‬‬


    ‫ﺑﺮﺍﻱ ﺗﻮﺿﻴﺢ ﺧﻂ ﺍﻭﻝ ﺑﻪ ﻗﺴﻤﺖ ۵ ﺩﺭ ﻛﻼﻳﻨﺖ ﻣﺮﺍﺟﻌﻪ ﻛﻨﻴﺪ . ﺩﺭ ﺧﻂ ﺩﻭﻡ ﻣﺎ ﭘﻮﺭﺗﻲ ﺭﺍ ﻛﻪ ﺩﺭ ‪ client‬ﺍﻧﺘﺨﺎﺏ‬ ‫ﻛﺮﺩﻳﻢ ، ﺍﻳﻨﺠﺎ ﻫﻢ ﻭﺍﺭﺩ ﻣﻴﻜﻨﻴﻢ ﻭ ﺩﺭ ﺧﻂ ﺳﻮﻡ ﺑﻪ ﺁﻥ ﭘﻮﺭﺕ ﮔﻮﺵ ﻣﻴﺪﻫﻴﻢ .‬
    ‫ﮔﻮﺵ ﺩﺍﺩﻥ ﺑﻪ ﭘﻮﺭﺕ : ﻳﻌﻨﻲ ﺍﻳﻦ ﭘﻮﺭﺕ ﺑﺎﺯ ﻭ ﻓﻌﺎﻝ ﺍﺳﺖ ﻭ ﻣﻨﺘﻈﺮ ﺍﺭﺍﺋﻪ ﺩﺳﺘﻮﺭﺍﺕ ﺍﺯ ‪ client‬ﻣﻲ ﺑﺎﺷﺪ .‬

    ‫۳- ‪: tcp1_Close‬‬
    ‫ﺑﺮﺍﻱ ﺗﻮﺿﻴﺤﺎﺕ ﺑﻪ ﻗﺴﻤﺖ ﻛﻼﻳﻨﺖ ﻣﺮﺍﺟﻌﻪ ﺷﻮﺩ . ﻛﺪ ﻫﺎﻱ ﻣﺮﺑﻮﻃﻪ ﺑﻪ ﺷﻜﻞ ﺯﻳﺮ ﺍﺳﺖ .‬

    کد PHP:
    ()‪Private Sub tcp1_Close‬‬
    ‫‪On Error Resume Next‬‬
    ‫‪tcp1
    .Close‬‬
    ‫۱۰۱۹
    = ‪tcp1.LocalPort‬‬
    ‫‪tcp1
    .Listen‬‬
    ‫‪End Sub‬‬


    ‫ﺗﻮﺟﻪ ﻛﻨﻴﺪ ﻛﻪ ﻭﻗﺘﻲ ﺑﻪ ﻫﺮ ﺩﻟﻴﻠﻲ ﺍﺭﺗﺒﺎﻁ ﻗﻄﻊ ﻣﻲ ﺷﻮﺩ ، ﮔﻮﺵ ﻛﺮﺩﻥ ﺳﻮﻛﺖ ﺑﻪ ﭘﻮﺭﺕ ﻫﻢ ﻏﻴﺮ ﻓﻌﺎﻝ ﻣﻴﺸﻮﺩ ﻭ ﻣﺎ‬ ‫ﺩﺭ ﺧﻂ ۳ ﻭ ۴ ﺑﻪ ﺑﺮﻧﺎﻣﻪ ﺳﺮﻭﺭ ﺩﺳﺘﻮﺭ ﻣﻴﺪﻫﻴﻢ ﻛﻪ ﺩﺭ ﺻﻮﺭﺗﻲ ﻛﻪ ﺍﺭﺗﺒﺎﻁ ﻗﻄﻊ ﺷﺪ ، ﺩﻭﺑﺎﺭﻩ ﺑﻪ ﭘﻮﺭﺕ ۱۰۱۹ ﮔﻮﺵ‬ ‫ﻛﻦ ﻭ ﻣﻨﺘﻈﺮ ﺩﺳﺘﻮﺭﺍﺕ ﺑﺎﺵ .‬

    ‫۴ -‪: tcp1_ConnectionRequest‬‬
    ‫ﻛﺪﻫﺎﻱ ﻣﺮﺑﻮﻁ ﺑﻪ ﺁﻥ :‬
    کد PHP:
    (‪Private Sub tcp1_ConnectionRequest (ByVal requestID As Long‬‬
    ‫‪If
    (tcp1.State <> sckClosed) Then tcp1.Close‬‬
    ‫۰
    = ‪tcp1.LocalPort‬‬
    ‫‪Tcp1
    .Accept requestID‬‬
    ‫‪End Sub‬‬


    ‫ﺍﻳﻦ ﻛﺪ ﺑﺎﻋﺚ ﻣﻴﺸﻮﺩ ﺗﺎ ﺳﺮﻭﺭ ﻣﺎ ﺩﺭ ﺻﻮﺭﺕ ﺑﺮﻗﺮﺍﺭﻱ ﺍﺭﺗﺒﺎﻁ ﺑﺎ ‪ ، client‬ﺑﻪ ‪ client‬ﺍﻋﻼﻡ ﻛﻨﺪ ﻛﻪ ﺍﺭﺗﺒﺎﻁ ﺑﺎ‬ ‫ﻣﻮﻓﻘﻂ ﺍﻧﺠﺎﻡ ﺷﺪ ﺍﺳﺖ .‬
    ‫۵ – ﺩﺭﻳﺎﻓﺖ ﺍﻃﻼﻋﺎﺕ :‬
    ‫ﻛﺪﻫﺎﻱ ﻣﺮﺑﻮﻁ ﺑﻪ ﺁﻥ :‬ کد PHP:

    (‪Private Sub tcp1_DataArrival (ByVal bytesTotal As Long‬‬
    ‫‪Dim Data
    as String‬‬
    ‫‪On Error Resume Next‬‬
    ‫‪Tcp1
    .GetData Data‬‬
    ‫‪If Data
    = “end” Then End‬‬
    ‫‪A
    $ = Data‬‬
    ‫$‪MsgBox A‬‬
    ‫‪End Sub‬‬


    ‫ﺩﺭ ﺧﻂ ﺍﻭﻝ ﺍﻳﻦ ﻛﺪ ﻣﺎ ﺍﺳﺘﺰﻳﻨﮓ ‪ data‬ﺭﺍ ﺗﻌﺮﻳﻒ ﻣﻴﻜﻨﻴﻢ ﻭ ﺩﺭ ﺧﻂ ﺩﻭﻡ ﺑﺮﺍﻱ ﺭﺩ ﻛﺮﺩﻥ ﻫﺮ ﮔﻮﻧﻪ ﺍﺷﻜﺎﻟﻲ ﺑﻪ‬ ‫ﺑﺮﻧﺎﻣﻪ ﺗﻮﺿﻴﺢ ﻣﻴﺪﻫﻴﻢ ﻭ ﺩﺭ ﺧﻂ ﺳﻮﻡ ۱‪ tcp‬ﺭﺍ ﻭﺍﺭﺩﺍﺭ ﻣﻴﻜﻨﺪ ﺍﺳﺘﺮﻳﻨﮓ ‪ data‬ﺭﺍ ﻛﻪ ﺍﺯ ‪ client‬ﻓﺮﺳﺘﺎﺩﻩ ﺷﺪﻩ ﻭ‬ ‫ﻣﻨﺘﻈﺮ ﮔﺮﻓﺘﻪ ﺷﺪﻥ ﺍﺳﺖ ﺭﺍ ﺩﺭﻳﺎﻓﺖ ﻛﻨﺪ .‬
    ‫ﺩﺭ ﺧﻂ ۵ ﻫﻢ ﺍﺳﺘﺮﻳﻨﮓ ‪ data‬ﺭﺍ ﺑﻪ ﻳﻚ ﺍﺳﺘﺮﻳﻨﮓ ﻛﻠﻴﺘﺮ ﻛﻪ ﻗﺎﺑﻠﻴﺖ ﺗﻌﺮﻳﻒ ﺷﺪﻥ ﻫﻢ ﺩﺍﺭﺩ ﺭﺑﻂ ﻣﻴﺪﻫﻴﻢ . ﻭ ﺳﭙﺲ‬ ‫ﺩﺭ ﺧﻂ ۶ ﺍﺳﺘﺮﻳﻨﮓ ﻣﺘﻨﻲ $‪ a‬ﺭﺍ ﺑﻪ ﺻﻮﺭﺕ ﻳﻚ ﭘﻴﻐﺎﻡ ﺑﻪ ﻗﺮﺑﺎﻧﻲ ﻧﺸﺎﻥ ﻣﻴﺪﻫﺪ .‬
    ‫ﻭ ﺍﻣﺎ :‬
    ‫ﺩﺭ ﺧﻂ ۴ ﭼﻪ ﻣﻲ ﮔﺬﺭﺩ :‬
    ‫ﺩﺭ ﺍﻳﻦ ﺧﻂ ﻣﺎ ﺁﻣﺪﻳﻢ ﺩﻳﺘﺎ ﻫﺎﻱ ﺩﺭﻳﺎﻓﺘﻲ ﺍﺯ ﺳﻤﺖ ﺳﺮﻭﺭ ﺭﺍ ﻛﻪ ﺑﻪ ﺻﻮﺭﺕ ﻣﺘﻦ ﺍﺳﺖ ﺭﺍ ﺟﻬﺖ ﺩﺍﺭ ﻛﺮﺩﻳﻢ . ﻳﻌﻨﻲ ﺑﻪ‬ ‫ﺳﺮﻭﺭ ﺩﺳﺘﻮﺭ ﺩﺍﺩﻳﻢ ﻛﻪ ﻫﺮ ﮔﺎﻩ ﻛﻼﻳﻨﺖ ﻛﻠﻤﻪ ‪ end‬ﺭﺍ ﺑﻪ ﺗﻨﻬﺎﻳﻲ ﺗﺎﻳﭗ ﻛﺮﺩ ﻭ ﺑﺮﺍﻱ ﺗﻮ ﻓﺮﺳﺘﺎﺩ ، ﺧﻮﺩ ﺭﺍ ﻛﺎﻣﻼ ﺍﺯ‬ ‫ﺭﺩﻩ ﺧﺎﺭﺝ ﻛﻦ ﻭ ﺑﺮﻧﺎﻣﻪ ﺧﻮﺩ ﺭﺍ ﺑﺒﻨﺪ .‬
    ‫ﺍﻳﻦ ﻗﺴﻤﺖ ﺭﺍ ﺑﺮﺍﻱ ﺁﻥ ﺁﻭﺭﺩﻡ ﺗﺎ ﻛﺴﺎﻧﻲ ﻛﻪ ﻣﻴﺨﻮﺍﻫﻨﺪ ﺑﺮﻧﺎﻣﻪ ﻫﺎﻱ ﭘﻴﺸﺮﻓﺘﻪ ﺗﺮ ﺭﺍ ﺑﻨﻮﻳﺴﻨﺪ . ﺭﺍﻩ ﺭﺍ ﺑﻠﺪ ﺑﺎﺷﻨﺪ ﻭ‬ ‫ﮔﻴﺞ ﻧﺸﻮﻧﺪ .‬

    ‫ﻛﻼﻡ ﺁﺧﺮ : ﺑﺎ ﺍﻳﻨﻜﻪ ﺍﻳﻦ ﻣﻘﺎﻟﻪ ﺍﺯ ﻣﻦ ﺍﻧﺮﮊﻱ ﺯﻳﺎﺩﻱ ﺑﺮﺩ . ﻭﻟﻲ ﻣﻦ ﺳﻌﻲ ﺧﻮﺩ ﺭﺍ ﻛﺮﺩﻡ ﻛﻪ ﺩﺭ ﺟﺎﻳﻲ ﺍﺯ ﺁﻥ ﻛﻢ ﻧﮕﺬﺍﺭﻡ‬ ‫. ﺍﮔﺮ ﺩﻭﺳﺘﺎﻥ ﻳﺎﺭﻱ ﻛﻨﻨﺪ ﻭ ﺍﻳﻦ ﮔﻮﻧﻪ ﻣﻘﺎﻻﺕ ﺑﺎ ﺍﺳﺘﻘﺒﺎﻝ ﺭﻭﺑﻪ ﺭﻭ ﺷﻮﺩ . ﺣﺘﻤﺎ ﻃﺮﻳﻘﻪ ﻧﻮﺷﺘﻦ ﺁﻧﺘﻲ ﻭﻳﺮﻭﺱ ﻫﺎ ﻭ‬ ‫ﺁﻧﺘﻲ ﺗﺮﻭﺟﺎﻥ ﻫﺎ ﺭﺍ ﻫﻢ ﺗﻮضیح ﻣﻴﺪﻫﻢ .‬
    ‫‫‪

    ‫ﺳﻮﺭﺱ ﻛﺎﻣﻞ ﻛﻼﻳﻨﺖ :‬
    کد PHP:
    ()‪Private Sub connect_Click‬‬‬
    If (tcp1.State <> sckClosed) Then tcp1.Close
    tcp1
    .LocalPort = 0
    tcp1
    .connect ip.Text, 1019
    End Sub

    ————————————————� �
    Private Sub disconnetc_Click()
    tcp1.Close
    AlertTXT
    .Caption = “‫”ﺍﺭﺗﺒﺎﻁ ﻗﻄﻊ ﺷﺪ‬
    AlertTXT
    .BackColor = &H8080FF
    End Sub
    ————————————————� �
    Private Sub Form_Resize()
    If
    Me.WindowState = 2 Then Me.WindowState = 0
    End Sub
    ————————————————� �
    Private Sub send_Click()
    On Error Resume Next
    a
    $ = sendtext
    tcp1
    .SendData a$
    send.SetFocus
    End Sub
    ————————————————� �—
    Private Sub tcp1_Close()
    AlertTXT.Caption = “‫”ﺍﺭﺗﺒﺎﻁ ﺑﺮﻗﺮﺍﺭﻧﻴﺴﺖ ﻭ ﻗﻄﻊ ﺷﺪ‬
    AlertTXT
    .BackColor = &H8080FF
    tcp1
    .Close
    End Sub
    ————————————————� �—
    -
    Private
    Sub tcp1_Connect()
    AlertTXT.Caption = “‫”ﺍﺭﺗﺒﺎﻁ ﺑﺮﻗﺮﺍﺭ ﺷﺪ‬
    AlertTXT
    .BackColor = &H80FF80
    End Sub


    : ‫ﺳﻮﺭﺱ ﻛﺎﻣﻞ ﺳﺮﻭﺭ‬
    کد PHP:
    Private Sub Form_Load()
    On Error Resume Next
    tcp1
    .LocalPort = 1019
    tcp1
    .Listen
    End Sub
    ——————————————
    -
    Private
    Sub tcp1_ConnectionRequest(ByVal requestID As Long)
    If (
    tcp1.State <> sckClosed) Then tcp1.Close
    tcp1
    .LocalPort = 0
    tcp1
    .Accept requestID
    End Sub
    ——————————————–
    Private Sub tcp1_DataArrival(ByVal bytesTotal As Long)
    Dim Data As String
    On Error Resume Next
    tcp1
    .GetData Data
    If Data = “end” Then End
    A
    $ = Data
    MsgBox A
    $
    End Sub
    —————————————–
    Private Sub tcp1_Close()
    On Error Resume Next
    tcp1
    .Close
    tcp1
    .LocalPort = 1019
    tcp1
    .Listen
    End Sub