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

نام تاپیک: استفاده از کنترل Winsock

  1. #1

    استفاده از کنترل Winsock

    سلام
    از کنترل Winsock برای برقراری ارتباط بین سرویس دهنده و سرویس گیرنده با دو پروتکل UDP و
    TCP استفاده می شود.



    پیاده سازی یک سرویس دهنده با پروتکل TCP :

    ابتدا یک پروژه جدید باز کرده و کنترل Winsock و دو txtbox و یک Commandbutton روی فرم قرار دهید.نام یک تکست باکس را txtsend و نام دیگری راtxtoutput قرار داده و خاصیت Multiline آنرا به True ست کنید و نام کنترل Winsock را Tcpserver قرارداده و کد زیر را در پروژه خود کپی کنید :


    Private Sub cmdsend_Click()
    Call tcpserver.SendData("SERVER>>>" & txtsend.Text)
    txtoutput.Text = txtoutput.Text & "SERVER>>>" & _
    txtsend.Text & vbCrLf & vbCrLf
    txtsend.Text = ""
    txtoutput.SelStart = Len(txtoutput.Text)
    End Sub

    Private Sub Form_Load()
    cmdsend.Enabled = False
    tcpserver.LocalPort = 5000
    Call tcpserver.Listen
    End Sub
    Private Sub Form_Terminate()
    Call tcpserver.Close
    End Sub
    Private Sub tcpserver_Close()
    cmdsend.Enabled = False
    Call tcpserver.Close
    txtoutput.Text = txtoutput.Text & _
    "Client closed connection." & _
    vbCrLf & vbCrLf
    txtoutput.SelStart = Len(txtoutput.Text)
    Call tcpserver.Listen
    End Sub
    Private Sub tcpserver_ConnectionRequest(ByVal requestID As Long)
    If tcpserver.State <> sckClosed Then
    Call tcpserver.Close
    End If
    cmdsend.Enabled = True
    Call tcpserver.Accept(requestID)
    txtoutput.Text = "Connection from IP address :" & _
    tcpserver.RemoteHostIP & vbCrLf & "Port #:" & _
    tcpserver.RemotePort & vbCrLf & vbCrLf
    End Sub
    Private Sub tcpserver_DataArrival(ByVal bytesTotal As Long)
    Dim message As String
    Call tcpserver.GetData(message)
    txtoutput.Text = txtoutput.Text & message & vbCrLf & _
    vbCrLf
    txtoutput.SelStart = Len(txtoutput.Text)
    End Sub
    Private Sub tcpserver_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
    Dim result As Integer
    result = MsgBox(Source & ":" & Description, vbOKOnly, _
    "TCp/IP Error")
    End Sub





    پیاده سازی یک سرویس گیرنده با پروتکل TCP :

    ابتدا یک پروژه جدید باز کرده و کنترل Winsock و دو txtbox و یک Commandbutton روی فرم قرار دهید.نام یک تکست باکس را txtsend و نام دیگری راtxtoutput قرار داده و خاصیت Multiline آنرا به True ست کنید و نام کنترل Winsock را Tcpclient قرارداده و کد زیر را در پروژه خود کپی کنید :


    Private Sub cmdsend_Click()
    Call tcpclient.SendData("CLIENT >>>" & txtsend.Text)
    txtoutput.Text = txtoutput.Text & "CLIENT >>>" & _
    txtsend.Text & vbCrLf & vbCrLf
    txtoutput.SelStart = Len(txtoutput.Text)
    txtsend.Text = ""
    End Sub

    Private Sub Form_Load()
    cmdsend.Enabled = False
    tcpclient.RemoteHost = _
    InputBox("Enter the remot host IP address", _
    "IP Address", "Localhost")
    If tcpclient.RemoteHost = "" Then
    tcpclient.RemoteHost = "Localhost"
    End If
    tcpclient.RemotePort = 5000
    Call tcpclient.Connect
    End Sub
    Private Sub Form_Terminate()
    Call tcpclient.Close
    End Sub
    Private Sub tcpclient_Close()
    cmdsend.Enabled = False
    Call tcpclient.Close
    txtoutput.Text = txtoutput.Text & _
    "Server closed connection" & vbCrLf
    txtoutput.SelStart = Len(txtoutput)
    End Sub

    Private Sub tcpclient_Connect()
    cmdsend.Enabled = True
    txtoutput.Text = "Connected to IP address" & _
    tcpclient.RemoteHostIP & vbCrLf & "Port #:" & _
    tcpclient.RemotePort & vbCrLf & vbCrLf
    End Sub
    Private Sub tcpclient_DataArrival(ByVal bytesTotal As Long)
    Dim message As String
    Call tcpclient.GetData(message)
    txtoutput.Text = txtoutput.Text & message & _
    vbCrLf & vbCrLf
    txtoutput.SelStart = Len(txtoutput)
    End Sub
    Private Sub tcpclient_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
    Dim result As Integer
    result = MsgBox(Source & ":" & Description _
    , vbOKOnly, "TCP/IP Error")
    End Sub





    پیاده سازی یک سرویس دهنده با پروتکل UDP:

    ابتدا یک پروژه جدید باز کرده و کنترل Winsock و دو txtbox و یک Commandbutton روی فرم قرار دهید.نام یک تکست باکس را txtsend و نام دیگری راtxtoutput قرار داده و خاصیت Multiline آنرا به True ست کنید و نام کنترل Winsock را udpsever و خاصیت Protocol آنرابه sck UDPProtocol ست کرده و کد زیر را در پروژه خود کپی کنید :


    Private Sub cmdsend_Click()
    Call udpserver.SendData(txtsend.Text)
    txtoutput.Text = txtoutput.Text & "Send Message :" & _
    txtsend.Text & vbCrLf & vbCrLf
    txtsend.Text = ""
    txtoutput.SelStart = Len(txtoutput.Text)
    udpserver.RemotePort = 0
    End Sub

    Private Sub Form_Load()
    Call udpserver.Bind(5000)
    End Sub
    Private Sub Form_Terminate()
    Call udpserver.Close
    End Sub
    Private Sub udpserver_DataArrival(ByVal bytesTotal As Long)
    Dim message As String
    Call udpserver.GetData(message)
    txtoutput.Text = txtoutput.Text & "Form1 Ip Address :" & _
    udpserver.RemoteHostIP & vbCrLf & "Port #: " & _
    Str$(udpserver.RemotePort) & vbCrLf & "Bytes received :" & _
    Str$(bytesTotal) & vbCrLf & "Message :" & message & vbCrLf & _
    vbCrLf
    End Sub




    پیاده سازی یک سرویس'گیرنده با پروتکل UDP:

    ابتدا یک پروژه جدید باز کرده و کنترل Winsock و دو txtbox و یک Commandbutton روی فرم قرار دهید.نام یک تکست باکس را txtsend و نام دیگری راtxtoutput قرار داده و خاصیت Multiline آنرا به True ست کنید و نام کنترل Winsock را udpclient و خاصیت Protocol آنرابه sck UDPProtocol ست کرده و کد زیر را در پروژه خود کپی کنید :


    Private Sub cmdsend_Click()
    Call udpclient.SendData(txtsend.Text)
    txtoutput.Text = txtoutput.Text & "Send Message :" & _
    txtsend.Text & vbCrLf & vbCrLf
    txtsend.Text = ""
    txtoutput.SelStart = Len(txtoutput.Text)

    End Sub

    Private Sub Form_Load()
    udpclient.RemoteHost = InputBox("Enter the remote host IP address" _
    , "IP address", "localhost")
    If udpclient.RemoteHost = "" Then
    udpclient.RemoteHost = "localhost"
    End If
    udpclient.RemotePort = 5000
    End Sub

    Private Sub Form_Terminate()
    Call udpclient.Close
    End Sub

    Private Sub udpclient_DataArrival(ByVal bytesTotal As Long)
    Dim message As String
    Call udpclient.GetData(message)
    txtoutput.Text = txtoutput.Text & "Form1 Ip Address :" & _
    udpclientRemoteHostIP & vbCrLf & "Port #: " & _
    Str$(udpclient.RemotePort) & vbCrLf & "Bytes received :" & _
    Str$(bytesTotal) & vbCrLf & "Message :" & message & vbCrLf
    End Sub


    با کمی سعی می توانید یک برنامه چت درست کنید! :wink:


    موفق و پیروز باشید 8)

  2. #2
    کاربر تازه وارد
    تاریخ عضویت
    مهر 1382
    محل زندگی
    ashkan@iranvig.com
    پست
    41

    دست شما درد نکنه

    خیلی زیبا وجالب بود منکه خیلی استفاده کردم ممنون از زحمت شما. بخصوص قسمت ارتباط با پروتکل UDP اون که واقعا زیبا و قشنگ بود(من برنامه شما رو جدا جدا ساختم و روی کامپیوترم اجراشون کردم هر دو تا شونو بعد وقتی از یکی میفرستادم اون یکی نشون میداد)
    جند سوال هم داشتم.
    1- این برنامه واسه ارتباط مستقیم میان دو کامیوتر آنهم از نوع یکی کلاینت و دیگری سرور هستش آیا میشه با تغییر اون ارتباط همگانی بشه یعنی اگه چند تا کامپیوتر هم باشند همه پیام های هم رو ببینند یعنی ما همه هم کلاینت باشیم هم سرور .
    2- این برنامه مستقیما با IP کار میکنه یعنی یکی از الزامات اون داشتن یه IP مستقل هست (بدلیل ماهیت WinSock) حالا اگه من IP مستقل نداشته باشم چی ؟ یعنی این برنامه رو میشه توی یک شبکه محلی اجرا کرد نه روی اینترنت .



    خیلی ممنون
    ایران ویج

  3. #3
    سلام
    از لطفتون خیلی ممنون :oops:

    در مورد سوال اولتون باید بگم تا اونجایی که من میدونم برای یه همچین کاری در روش UDP باید ابتدا تمامی پیامها به سرور فرستاده شده سپس سرور پیامها را به مقصد ارسال کند. در این روش فقط سرور به IP افراد دسترسی دارد و افراد فقط پیامهایشان را به آدرس IP سرور می فرستند!بنابر این شما باید یک برنامه سرور(با کمی تغییرات) و چند برنامه کلاینت طراحی کنید.

    درمورد سوال دومتونم باید بگم فکر کنم هر شبکه محلی به کاربراش یه IP اختصاص می ده که شما می تونید بوسیله اون ارتباط بین کامپیوتر های مورد نظر رو برقرار کنید.

  4. #4
    کاربر تازه وارد
    تاریخ عضویت
    مهر 1382
    محل زندگی
    ashkan@iranvig.com
    پست
    41

    ای پی

    با درود به شما :
    واسه اینکه نخوایید حتما یه سرور و چند کلاینت داشته باشید میتونید ای پی مربوط به لوکال و ریموت رو هر دو شو مثلا بدید 255.255.255.255 در این حالت دیگه وین سوکت موقع ارسال به همه کامپیوترهایی که آی پیشون اینه اطلاعات رو ارسال میکنه این فقط حسنش اینه که دیگه لازم نیست حتما کلاینت سروری کار کنی اما یکی از کامپوترهایی که اطلاعات دوباره بهش فرستادهمیشه کامپیوتر فرستنده هم هست :lol: که باید با برنامه نویسی مشکل رو حل کرد.

    مخلصتیم
    ایران ویج

  5. #5
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    مهر 1388
    پست
    173

    نقل قول: استفاده از کنترل Winsock

    آقا این کنترل کجاست من این کنترل
    Winsock

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

  6. #6
    کاربر دائمی آواتار alimanam
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    لندن
    سن
    38
    پست
    1,556

    نقل قول: استفاده از کنترل Winsock

    با سلام

    کنترل کجاست
    Winsock یه ActiveX هستش پس اگه در لیست Com Components نتونستی پیداش کنی میتونی از اینجا دانلود کنی . البته من فکر میکنم در فضای نام System.Net.Sockets همین اتفاقات بالا رو میشه ایجاد کرد ( یعنی نیازی به استفاده از این کامپونت اکتیوایکس نیست چون ناسلامتی دارین با دات نت برنامه مینویسین و همه امکانات رو شاید بیشتر رو در اختیارتون گذاشته )



    موفق باشید ./

تاپیک های مشابه

  1. دسترسی به Cmd یه کامپیوتر دیگه از طریق Winsock
    نوشته شده توسط The One در بخش برنامه نویسی در 6 VB
    پاسخ: 11
    آخرین پست: چهارشنبه 30 آبان 1386, 10:49 صبح
  2. آموزش کامل Winsock
    نوشته شده توسط samane_badgirl2000 در بخش برنامه نویسی در 6 VB
    پاسخ: 7
    آخرین پست: چهارشنبه 09 خرداد 1386, 14:32 عصر
  3. مشکل عجیب با winsock
    نوشته شده توسط amin_vb در بخش برنامه نویسی در 6 VB
    پاسخ: 9
    آخرین پست: چهارشنبه 12 اردیبهشت 1386, 03:23 صبح
  4. WinSock
    نوشته شده توسط ayub_coder در بخش برنامه نویسی در 6 VB
    پاسخ: 1
    آخرین پست: شنبه 07 بهمن 1385, 11:19 صبح

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

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