مرحباً NetworkStream


الكاتب الأخ : أبو عابد

السلام عليكم ورحمة الله

احتجت لعمل تطبيق يقوم بالاتصال بأجهزة أخرى يعني Telnet

طبعاً الوضع مختلف عن VB6 فلا مكان للـ Winsock !!!

بدأت البحث في النت عن طريقة اتصل بها مع الأجهزة الأخرى ، و كانت الأصوت تدل على استخدام الـ Socket و وجدت الكثير يبحث عن أداة تقوم بعمل Winsock على بيئة الدوت نت .

قرأت عن الـ Socket فوجدت الموضوع لم يعجبني …

فكرت أن أتعاطي الـ VB6 لولا ستر الله علي

عاودت البحث عن حلول أخرى (وهذا من مميزات الـ .Net ) فوجدت ضالتي في الـ NetworkStream تحت فضاء الأسماء System.Net.Sockets

الموضوع بكل بساطة هو كالتالي :

نعرف كائن من TcpClient و كائن من NetworkStream

رمز برمجي:
    Dim oTcpClient As New System.Net.Sockets.TcpClient
    Dim oNetworkStream As Net.Sockets.NetworkStream

نقوم بعمل اتصال على الجهاز المطلوب ، ثم نسند قيمة الستريم لكائن الـ NetworkStream

رمز برمجي:
        oTcpClient.Connect(txtServer.Text, CInt(txtPort.Text))
        oNetworkStream = oTcpClient.GetStream

هذا الكود يكتب تحت زر اتصال .

*** إذا أردنا أن نرسل بيانات للجهاز الآخر نكتب الكود التالي :

رمز برمجي:
       Dim bWriteBytes(oTcpClient.ReceiveBufferSize) As Byte
        If oTcpClient.Connected Then
            If oTcpClient.GetStream.CanWrite Then
                ReDim bWriteBytes(System.Text.Encoding.ASCII.GetBytes(txtCommand.Text & vbCrLf).Length)
                bWriteBytes = System.Text.Encoding.ASCII.GetBytes(txtCommand.Text & vbCrLf)
                oNetworkStream.Write(bWriteBytes, 0, bWriteBytes.Length)
            End If
        End If

هذا الكود يكتب تحت زر تنفيذ الأمر .

*** أما إذا أردنا أن نقرأ القيم العائدة من الجهاز الآخر نكتب الكود التالي :

رمز برمجي:
            If oNetworkStream.DataAvailable Then

                Dim bData(oTcpClient.ReceiveBufferSize) As Byte
                Dim intBuffer As Integer = oNetworkStream.Read(bData, 0, bData.Length)
                Dim strVal As String = Encoding.ASCII.GetString(bData, 0, intBuffer)

                txtResult.AppendText(strVal & vbNewLine)
                txtResult.Select(txtResult.TextLength, 1)
            End If

هذا الكود نضعه في مؤقت Timer يعمل كل ثانية ، بحيث يقرأ القيم الموجودة في المخزن و يظهرها على صندوق النص txtResult.

و صلى الله و سلم على نبينا محمد ،،

  1. لا توجد تعليقات حتى الآن.
  1. No trackbacks yet.

شاركنا برأيك ,لكي نرقى بالمدونة,يمكنك أضافة تعليق عن طريق حسابك في Facebook