+ ارسال نظر
نمایش نتایج: از 1 به 2 از 2

موضوع: WinSock کنترل

  1. #1
    مدیرکل انجمنهای نور آسمان vorojax آواتار ها
    تاریخ عضویت
    Jun 2008
    محل سکونت
    همشهری حضرت عشق
    نوشته ها
    7,305
    تشکر
    6
    تشکر شده 0 بار در 0 ارسال

    پیش فرض WinSock کنترل

    [size=xx-large]

    WinSock کنترل
    مقدمه :
    نسبت به تمام کنترلهاي اینترنت در سطح پایینتري WinSock کنترل
    قرار دارد . این کنترل امکان ایجاد سرویسهاي شبکه اي مبتنی بر
    را مهیا می کند . بعبارت دیگر توسط این UDP و TCP پروتکلهاي
    سرویس گیرنده ) Client/Server کنترل می توان برنامه هاي کاربردي
    بین UDP و یا TCP / سرویس دهنده ) ایجاد و با استفاده از پروتکل
    آنها ارتباط برقرار نمود .
    با تنظیم خصوصیات و فراخوانی متدهاي این کنترل می توانید به
    راحتی به یک کامپیوتر راه دور متصل شوید و داده ها را در هر دو جهت
    جابجا نمائید . نمونه کاربرهایی که می توان با این کنترل ایجاد نمود :
    Proxy Server ،Mail server ،Mail client ، Client-server chat
    پیاده سازي الگوریتم هاي ، Port Scanner ،Network Game ،
    موازي و …
    : TCP مبانی
    اجازه می ( Transfer Control Protocol ) پروتکل کنترل اینترنت
    به یک ( socket ) را از طریق سوکت ( Connection ) دهد یک اتصال
    ساخته و استفاده کنید . با ( Remote Computer ) کامپیوتر راه دور
    استفاده از این اتصال ، هر دو کامپیوتر می توانند داده ها را بین
    همانند صحبت TCP خودشان انتقال دهند . برقراري ارتباط از طریق
    کردن با تلفن است که باید حتماً اتصالی بین دو کامپیوتر صورت گیرد
    تا بتوانند با هم ارتباط برقرار کنند .
    IP می سازید بایستی بدانید که نام یا آدرس Client اگر یک برنامه
    و همچنین از طریق چه ( Remote Host IP ) چیست Server کامپیوتر
    حال بایستی . ( Port Remote ) پورتی می توانید به آن متصل شوید
    کنید . Connect به آن پورت


    ١٥٢
    می سازید بایستی پورتی را که روي آن Server همچنین اگر یک برنامه
    و سپس به ( LocalPort ) به درخواستها گوش می دهید مشخص کنید
    . ( Listen ) پورت گوش دهید
    این Server تقاضاي یک اتصال را می دهد Client زمانیکه یک کامپیوتر
    می کند . Accept درخواست را
    زمانیکه یک اتصال ساخته می شود ، هر دو کامپیوتر می توانند داده را
    فرستاده و دریافت کنند .
    !Error
    : UDP مبانی
    پروتکلی بدون ( User Datagram Protocol ) پروتکل دیتاگرام کاربر
    کامپیوترها نیاز به ، TCP است . برخلاف ( Connectionless ) اتصال
    و client برپا کردن یک اتصال ندارند بنابراین یک برنامه می تواند یک
    شبیه ارسال نامه از UDP باشد . برقراري ارتباط در server یا یک
    طریق پست است .
    Client کامپیوتر Local Port ابتدا باید UDP براي انتقال داده توسط


    ١٥٣
    را برابر RemoteHost تنها بایستی Server تنظیم گردد . کامپیوتر
    را همان Remote Port قرار دهد و همچنین Client آدرس کامپیوتر
    قرار دهد . سپس دو کامپیوتر می توانند Client کامپیوتر Local Port
    داده ها را بین خود جابجا کنند .
    : WinSock استفاده از کنترل
    اولین کاري WinSock 1 – انتخاب پروتکل: در زمان استفاده از کنترل
    است . UDP یا TCP که باید انجام دهید انتخاب یکی از پروتکلهاي
    طبیعت برنامه اي که شما می سازید نوع پروتکلی را که باید استفاده
    کنید مشخص می کند . چند سوال زیر به شما کمک می کند که پروتکل
    مورد نیازتان را انتخاب کنید :
    - آیا برنامه شما در زمانیکه داده فرستاده می شود یا دریافت می شود
    دارد ؟ اگر چنین است Client یا Server نیاز به اطلاعاتی از طرف
    قبل از ارسال یا دریافت داده ایجاد شود . TCP بایستی یک اتصال
    - آیا داده بسیار بزرگ است ( مثل تصویر یا فایلهاي صوتی ) ؟ زمانیکه
    اتصال را باقی نگه می TCP ساخته می شود پروتکل TCP یک اتصال
    دارد و درستی ارسال داده تضمین شده است . این اتصال در هر حال به


    ١٥٤
    منابع محاسباتی بیشتري نیاز دارد و بنابراین پرهزینه تر است .
    ارسال ( Session ) - آیا داده متناوب ارسال می شود یا در یک نشست
    خواهد شد ؟ براي مثال اگر شما یک برنامه می سازید که کامپترهاي
    مشخصی را در یک زمان خاص از انجام شدن عملیاتی مطلع می کند
    همچنین براي ارسال UDP مناسب تر است . پروتکل UDP پروتکل
    مقادیر کوچک داده اي مناست تر می باشد .
    2 – تنظیم پروتکل : براي تنظیم پروتکلی که می خواهید در برنامه تان از
    کنترل Protocol آن استفاده کنید در زمان طراحی برنامه خاصیت
    قرار sckUDPProtocol و یا sckTCPProtocol را برابر WinSock
    دهید . همچنین می توانید پروتکل خود را توسط کد زیر تنظیم کنید :
    WinSock.Protocol=sckTCPProtocol
    3 – مشخص کردن نام کامپیوتان : براي اتصال به کامپیوتر راه دور
    و یا نام کامپوتر را بدانید . IP بایستی آدرس
    موجود Control Panel/Network/Identification نام کامپیوتر در
    خود را Server و Client است . در صورتیکه می خواهید دو برنامه
    براي هر دو IP روي یک کامپیوتر تست کنید از آدرس 127.0.0.1
    استفاده کنید اما اگر دو برنامه را روي دو کامپیوتر مجزا در شبکه قرار
    می توانید آدرس DOS Prompt در ipconfig داده اید با اجراي دستور
    کامپیوتر ها را بدست آورید . IP
    TCP در زمان ساخت برنامه اي که از پروتکل : TCP 4 – ایجاد اتصال
    است یا Client استفاده می کند ابتدا باید تصمیم بگیرید که این برنامه
    بایستی روي یک پورت خاص Server براي ساخت یک برنامه . Server
    تقاضاي یک اتصال را می دهد ، برنامه Client کنید . زمانیکه Listen
    کند و بنابراین اتصال کامل شده است . Accept می تواند آنرا Server


    ١٥٥
    می توانند با هم ارتباط داشته باشند . Server و Client حال
    را نشان می دهد : TCP مراحل زیر ساخت یک سرور چت ساده بر مبناي
    را انتخاب کنید و در لیست Components گزینه Project - از منوي
    را انتخاب کنید . Microsoft WinSock ها مورد 6.0 Component
    tcpserver در فرم خود قرار دهید و نام آنرا WinSock - یک کنترل
    بگذارید
    و نیز یک txtReceiveData و txtSendData با نامهاي textbox - دو
    دکمه در فرم قرار دهید .
    بنویسید : Form_Load - کد زیر را در رویداد
    Tcpserver.LocalPort=1000
    tcpserver.Listen
    می آید رویداد Client - زمانیکه درخواستی از طرف
    اجرا می شود . در این رویداد ابتدا باید چک کنید ConnectionRequest
    که حالت کنترل بسته باشد . اگر چنین نیست اتصال را قبل از پذیرفتن
    می requestID اتصال جدید ببندید . سپس تقاضا را بر اساس پارامتر
    پذیریم :
    Private Sub tcpserver_ConnectionRequest(ByVal
    (requestID As Long
    tcpserver.Close sckClosed Then <> If tcpserver.State
    tcpserver.Accept requestID
    End Sub
    برقرار شده است . کد زیر را براي Server و Client - حال اتصال بین
    بنویسید : Send مربوط به کلیک دکمه event


    ١٥٦
    Tcpserver.SendData txtSendData.text
    اجرا می شود DataArrival بیاید رویداد Client - اگر داده اي از طرف
    . کد زیر را براي این رویداد بنویسید :
    As Private Sub tcpserver_DataArrival(ByVal bytesTotal
    (Long
    Dim strData As String
    strData tcpserver.GetData
    txtReceiveData.Text = strData
    End Sub
    بنویسید : Form_Unload - کد زیر را براي رویداد
    Tcpserver.Close
    بصورت زیر است : TCP Client مراحل ساخت یک
    بگذارید . tcpclient در فرم قرار دهید و نام آنرا WinSock - یک کنترل
    و نیز یک دکمه با نام txtreceive و txtsend با نامهاي textbox - دو
    در فرم قرار دهید . send
    در فرم قرار دهید . connect - یک دکمه با نام
    بنویسید : Form_Load - کد زیر را براي متد
    tcpclient.RemoteHost=”yourservername”x
    tcpclient.RemotePort=1000
    بنویسید : connect - کد زیر را براي رویداد کلیک شدن دکمه
    tcpclient.Connect
    بنویسید : send - کد زیر را براي رویداد کلیک شدن دکمه


    ١٥٧
    tctclient.SendData txtsend.Text
    بنویسید : DataArrival - کد زیر را براي رویداد
    As Private Sub tcpclient_DataArrival(ByVal bytesTotal
    (Long
    Dim strData As String
    strData tcpclient.GetData
    txtreceive.Text = strData
    End Sub
    بنویسید : Form_Unload - کد زیر را باري رویداد
    Tcpclient.Close
    ساده را نشان می دهد . فایل Client-Server کدهاي فوق یک سیستم
    هر دو برنامه را بسازید و آنها را اجرا کنید تا بتوانید سیستم خود exe
    را تست کنید .
    اي که در بالا ساخته Server : 5 – پذیرفتن بیش از یک تقاضاي اتصال
    شد تنها می تواند تقاضاي یک اتصال را بپذیرد . با استفاده از ایجاد یک
    می توان چندین تقاضاي اتصال را پذیرفت . WinSock آرایه از کنترل
    از کنترل بسازیم ( با تنظیم ( instance ) براي اینکار کافی است یک کپی
    جدید بکار ببریم . instance را براي Accept و متد ( Index خاصیت
    در فرم داریم که sckServer با نام WinSock فرض کنید یک کنترل
    از intMax آنرا صفر قرار داده ایم . همچنین یک متغیر Index خاصیت
    را نگه Server تعریف می کنیم که تعداد اتصالات همزمان به Long نوع
    کد زیر را بنویسید : Form_Load مربوط به event می دارد . در


    ١٥٨
    intMax=0
    sckServer(0).LocalPort=1000
    sckServer(0).Listen
    هر بار که تقاضاي یک اتصال می رسد کد ابتدا تست می کند که مقدار
    یکی intMax صفر باشد متغیر Index چقدر است . اگر مقدار Index
    جدید از کنترل instance براي ساخت یک intMax افزایش می یابد و از
    براي پذیرفتن تقاضاي اتصال instance استفاده می شود . حال از این
    استفاده می گردد . براي اینکار کد زیر را براي رویداد
    بنویسید : ConnectionRequest
    Private Sub sckServer_ConnectionRequest(Index As
    (Integer, ByVal requestID As Long
    If Index = 0 Then
    1 + intmax = intmax
    Load sckServer(intmax)x
    0 = sckServer(intmax).LocalPort
    sckServer(Index).Accept requestID
    End If
    End Sub
    ساده تر از برنامه هاي UDP ساخت یک برنامه : UDP 6 – ایجاد اتصال
    TCP به اتصال نیاز ندارد . در برنامه UDP است زیرا پروتکل TCP
    می کرد و یک کنترل Listen بایستی حتما WinSock بالا یک کنترل
    ایجاد نمود . در عوض پروتکل Connect دیگر یک اتصال را توسط متد
    نیازي به اتصال ندارد . براي ارسال داده بین دو کنترل UDP
    سه مرحله بایستی انجام شود : WinSock
    برابر نام کامپیوتر مقابل است . RemoteHost - پارامتر
    کامپیوتر مقابل LocalPort برابر پارامتر RemotePort - پارامتر


    ١٥٩
    LocalPort براي مشخص کردن Bind - استفاده از متد
    چون هر دو کامپیوتر از نظر ارتباط مساوي هستند ، این نوع برنامه ها
    گویند . براي نمونه از کد زیر براي ساخت یک برنامه Peer-to-Peer را
    استفاده می کنیم : chat
    بگذارید udppeerA در فرم قرار دهید و نام آنرا WinSock - یک کنترل
    .
    قرار دهید . UDPProtocol آنرا Protocol - خاصیت
    و نیز یک دکمه در فرم txtreceive و txtsend با نامهاي textbox - دو
    قرار دهید .
    بنویسید : Form_Load - کد زیر را براي متد
    udppeerA.RemoteHost=”nameofpeerB”x
    udppeerA.RemotePort=1001
    1002 udppeerA.Bind
    مربوط به کلیک دکمه بنویسید : event - کد زیر را براي
    udppeerA.SendData txtsend.text
    بنویسید : DataArrival - کد زیر را براي رویداد
    Dim strData as String
    strData udppeerA.GetData
    txtreceive.Text=strData
    مشابه مراحل بالا عمل کنید فقط خاصیت UDP peerB براي ساخت
    آنرا RemotePort و خاصیت PeerA آنرا نام کامپیوتر RemoteHost
    آنرا 1001 قرار دهید . Bind 1002 و خاصیت
    [/size]

  2. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    محل سکونت
    Advertising world
    نوشته ها
    Many

     

    حرز امام جواد

     

  3. #2
    مدیرکل انجمنهای نور آسمان vorojax آواتار ها
    تاریخ عضویت
    Jun 2008
    محل سکونت
    همشهری حضرت عشق
    نوشته ها
    7,305
    تشکر
    6
    تشکر شده 0 بار در 0 ارسال

    پیش فرض WinSock کنترل قسمت دوم

    [size=xx-large]

    WinSock کنترل قسمت دوم
    : WinSock بررسی خواص کنترل
    را ( receive مقدار داده دریافت شده ( موجود در بافر : ByteReceived
    می توان این داده را دریافت نمود . GetData نشان می دهد . توسط متد
    نام ماشین محلی را نشان می دهد . این پارامتر : LocalHostName
    فقط خواندنی است .
    برمی گرداند . string ماشین محلی را بصورت یک IP آدرس : LocalIP
    این پارامتر فقط خواندنی است .
    براي خواندن و یا تنظیم شماره پورت محلی بکار می رود . : LocalPort
    براي خواندن و یا تنظیم پروتوکل مورد استفاده توسط : Protocol
    بکار می رود . WinSock کنترل
    ماشین راه IP براي خواندن و یا تنظیم نام یا آدرس : RemoteHost
    دور بکار می رود .
    ماشین راه دور را برمی گرداند : IP آدرس : RemoteHostIP
    بعد از زمانیکه یک اتصال توسط متد Client -1 براي برنامه هاي
    ماشین راه دور IP پذیرفته شد ، این خاصیت حاوي آدرس Connect
    است .
    این Request Connection بعد از آمدن یک ، Server 2 - براي برنامه
    ماشین راه دور است . IP خاصیت شامل آدرس
    Data بعد از اینکه رویداد UDP 3 - در زمان استفاده از پروتکل


    ١٦١
    ماشینی است که داده را IP رخ داد این خاصیت حاوي آدرس Arrival
    فرستاده .
    براي خواندن و یا تنظیم شماره پورت ماشین راه دوري : RemotePort
    که می خواهید به آن متصل شوید بکار می رود .
    مقداري را برمی گرداند که مرتبط با سوکتی است که : SocketHandle
    WinSock را مدیریت می کند و براي ارتباط با لایه WinSock کنترل
    API بکار می رود . این پارامتر فقط خواندنی است و تنها براي ارسال به
    طراحی شده است . WinSock هاي
    را نشان می دهد . وضعیتهاي ممکن WinSock وضعیت کنترل : State
    عبارتند از : State براي
    اتصال بسته است . : sckClosed - 1
    اتصال باز است . : sckOpen - 2
    حالت گوش دادن به پورت : sckListening - 3
    معلق شدن اتصال : sckConnectionPending - 4
    تصمیم گیري در مورد میزبان : sckResolvingHost - 5
    در مورد میزبان تصمیم گیري شد . : sckHostResolved - 6
    حالت برقراري ارتباط : sckConnecting - 7
    ارتباط برقرار شد . : sckConnected - 8
    حالت قطع اتصال : sckClosing - 9
    حالت خطا : sckError - 10


    ١٦٢
    : WinSock بررسی متدهاي کنترل
    بکار می رود . این TCP Server تنها براي برنامه هاي : Accept متد
    متد براي پذیرفتن یک اتصال در زمان مدیریت رویداد
    استفاده می شود . ConnectionRequest
    یک اتصال را مشخص LocalIP و LocalPort این پارامتر : Bind متد
    می کند .
    listening و یا بستن یک TCP براي بستن یک اتصال : Close متد
    بکار می رود . socket
    بلوك جاري داده دریافت شده را گرفته و آنرا در : GetData متد
    ذخیره می کند . شکل کلی این متد بصورت زیر Variant متغیري از نوع
    است :
    WinSock.GetData data[,type][,maxlen]x
    برابر data داده دریافتی است . اگر داده کافی موجود نباشد data که
    خواهد بود . empty


    ١٦٣
    نوع داده دریافتی است که می تواند مقادیر زیر باشد : type
    vbInteger - vbLong - vbSingle - vbDouble - - vbByte
    vbString - - vbDate - vbBoolean - vbError
    vbArray+vbByte
    و یا یک byte Array حداکثر سایز را در زمان دریافت یک maxlen
    مشخص می کند . string
    استفاده می شود که این رویداد Data Arrival در رویداد Getdata متد
    اي که شما تعیین maxlen دارد . اگر TotalBytes یک پارامتر با نام
    باشد پیغام هشدار شماره 10040 دریافت TotalBytes کرده اید کمتر از
    می کنید بدین معنی که بایتهاي باقیمانده گم خواهند شد .
    قرار می دهد . Listen یک سوکت می سازد و آنرا در حالت : Listen متد
    بکار میرود . TCP این متد تنها در اتصالات
    است با این تفاوت که داده را از صف GetData مشابه : PeekData متد
    بکار می رود . TCP ورودي حذف نمی کند . این متد تنها براي اتصالات
    براي ارسال داده به کامپیوتر راه دور بکار می رود . : SendData متد
    : WinSock هاي کنترل event بررسی
    زمانی رخ می دهد که کامپیوتر راه دور اتصال را ببندد . : Close رویداد
    ایجاد شد روي می Server بعد از اینکه یک اتصال به : Connect رویداد
    دهد . شکل کلی آن بصورت زیر است :
    Private Sub WinSock_Connect(ErrorOccurred As
    Boolean)x
    باشد یعنی True دو مقدار دارد : اگر ErrorOccurred که پارامتر
    باشد یعنی اتصال با موفقیت انجام False شده است و اگر Fail اتصال
    شده است .
    هایی که در زمان فرایند باز کردن error می توانید Connect با رویداد


    ١٦٤
    اتصال برگردانده شده را چک کنید .
    زمانی رخ می دهد که یک کامپیوتر راه : ConnectionRequest رویداد
    TCP دور تقاضاي یک اتصال را بدهد . این رویداد فقط براي برنامه هاي
    بکار می رود . Server
    زمانی رخ می دهد که داده جدیدي بیاید . : DataArrival رویداد
    زمانی رخ می دهد که یک خطا در فرایند ارتباط رخ دهد ( : Error رویداد
    شکل کلی آن . ( Failed to Send و یا Failed to Connect مثلا
    بصورت زیر است :
    as Private WinSock_Error(number as Integer,description
    String,scode as Long,source as String,helpfile as
    Long,canceldisplay as Boolean)x String,helpcontext as
    شماره کد خطا است . number
    توضیحی در مورد خطا است . description
    توصیف منبع خطا source
    مشخص می کند آیا پیغام خطاي پیش فرض نشان : canceldisplay
    داده شود یا نه
    تکمیل Send زمانی رخ می دهد که یک عمل : SendComplete رویداد
    شده باشد .
    زمانی رخ می دهد که کنترل شروع به ارسال : SendProgress رویداد
    داده نماید . شکل کلی آن بصورت زیر است :
    ,WinSock_SendProgress (bytesSent As Long
    bytesRemaining As Long)x



    تعداد bytesRemaining تعداد بایتهاي ارسال شده و bytesSent که
    بایتهاي باقیمانده است
    [/size]

+ ارسال نظر

اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

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

مجوز های ارسال و ویرایش

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