أنت غير متصل حاليًا، وفي انتظار الإنترنت الخاص بك ليقوم بإعادة الاتصال

كيفية استخدام توجيهات الإخراج المسماة للاتصالات interprocess في Visual Basic.NET أو في Visual Basic 2005

هام: تمت ترجمة هذا المقال باستخدام برنامج ترجمة آلية لشركة مايكروسوفت بدلاً من الاستعانة بمترجم بشري. تقدم شركة مايكروسوفت كلاً من المقالات المترجمة بواسطة المترجمين البشر والمقالات المترجمة آليًا وبالتالي ستتمكن من الوصول إلى كل المقالات الموجودة في قاعدة المعرفة الخاصة بنا وباللغة الخاصة بك. بالرغم من ذلك، فإن المقالة المترجمة آليًا لا تكون دقيقة دائمًا وقد تحتوي على أخطاء إملائية أو لغوية أو نحوية، مثل تلك الأخطاء الصادرة عن متحدث أجنبي عندما يتحدث بلغتك. لا تتحمل شركة مايكروسوفت مسئولية عدم الدقة أو الأخطاء أو الضرر الناتج عن أية أخطاء في ترجمة المحتوى أو استخدامه من قبل عملائنا. تعمل شركة مايكروسوفت باستمرار على ترقية برنامج الترجمة الآلية. إذا ما وجدت أحد الأخطاء وترغب في المساعدة في هذا المجهود، الرجاء اتمام الاستطلاع الموجود أسفل هذه المقالة

اضغط هنا لرابط المقالة باللغة الانجليزية871044
الموجز
يناقش هذا المقالة خطوة How to استخدام توجيهات الإخراج المسماة في Microsoft Visual Basic.NET أو في Microsoft Visual Basic 2005 للاتصالات interprocess. تتضمن هذه الوثيقة نموذج التعليمات برمجية الذي يوضح اتصال العميل / الملقم باستخدام توجيه إخراج مسمى في Visual Basic.NET أو في Visual Basic 2005. المقالة وصف الاتصال interprocess بواسطة إنشاء ملقم توجيه إخراج مسمى والعميل توجيه إخراج مسمى. يتم تنفيذ الاتصال عبر أنبوب الاتصال بالطريقة التالية:
  • إنشاء توجيه إخراج مسمى.
  • منع تطبيق الملقم باستخدام الدالة ConnectNamedPipe حتى يصل عميل.
  • الاتصال بملقم باستخدام الدالة CallNamedPipe.
  • استدعاء دالة ReadFile أو الدالة WriteFile للاتصال عبر أنبوب الاتصال.
  • استدعاء دالة DisconnectNamedPipe عند انتهاء العملية استخدام توجيه الإخراج.
  • استدعاء دالة CloseHandle على توجيه الإخراج المسمى بعد أكملت تتصل عبر أنبوب الاتصال.
INTRODUCTION
توجيه إخراج مسمى هو توجيه إخراج باتجاه واحد أو مزدوج للاتصالات بين ملقم توجيه والعملاء توجيه واحد أو أكثر. يمكنك مستخدم توجيهات الإخراج المسماة إلى توفير اتصالات بين العمليات على نفس الكمبيوتر أو بين العمليات على أجهزة كمبيوتر مختلفة عبر شبكة اتصال. مصطلح ملقم توجيه الإخراج المسمى " " يشير إلى عملية ينشئ توجيه إخراج مسمى, و المصطلح " باسم عميل الإخراج " يشير إلى عملية يصل إلى مثيل لأحد توجيه إخراج مسمى.

يمكنك استخدام Microsoft Visual Basic.NET أو Microsoft Visual Basic 2005 لإنشاء تطبيقات تتصل إلى عمليات أخرى باستخدام توجيهات الإخراج المسماة. تتضمن هذه الوثيقة عينة تعليمات برمجية يستخدم توجيه إخراج مسمى للاتصال بين التطبيقين Visual Basic.NET أو Visual Basic Windows 2005.

العودة إلى الأعلى

المتطلبات

تفترض هذه المقالة التي التي هي مألوفاً المواضيع التالية:
  • تطبيقات Windows
  • برمجة Visual Basic.NET
  • استخدام توجيهات الإخراج
توضح القائمة التالية بالتفصيل البرامج الأجهزة المستحسنة أو بنية الشبكة, و وحزم الخدمات التي تحتاجها:
  • Microsoft Visual Studio.NET أو Microsoft Visual Studio 2005
  • Microsoft.NET Framework
العودة إلى الأعلى

إنشاء ملقم توجيه إخراج مسمى

إلى إنشاء ملقم توجيه إخراج مسمى, و ثم الاتصال مع العميل عبر الإخراج، اتبع هذه الخطوات:
  1. إنشاء توجيه إخراج مسمى.
  2. استدعاء دالة لحظر الملقم حتى يصل عميل.
  3. استدعاء دالة أو الدالة للاتصال عبر أنبوب الاتصال.
  4. استدعاء دالة عند انتهاء العملية استخدام توجيه الإخراج.
  5. استدعاء دالة على توجيه الإخراج المسمى.
العودة إلى الأعلى

تصميم تطبيق ذو نهاية خلفية Windows الذي ينشئ ملقم توجيه إخراج مسمى

لتصميم تطبيق ذو نهاية خلفية Windows ينشئ ملقم توجيه الإخراج باستخدام Visual Basic.NET أو 2005 Visual Basic " ، اتبع هذه الخطوات:
  1. ابدأ تشغيل Microsoft Visual Studio.NET أو Microsoft Visual Studio 2005.
  2. ثم في القائمة أشر إلى , وانقر .
  3. ضمن , انقر فوق " ، ومن ثم انقر فوق تحت .

    ملاحظة في Visual Studio أو 2005 فوق Visual Basic ضمن أنواع Project .
  4. في المربع , اكتب MyServerApp، ومن ثم انقر فوق . افتراضياً، يتم إنشاء نموذج الذي يدعى Form1.
  5. إضافة ثلاثة عناصر إلى النموذج Form1.
  6. في القائمة انقر فوق .
  7. قم بتعيين الخاصية من عناصر تحكم إلى القيم التالية:
    الاسمنص
    Button1إنشاء توجيه إخراج مسمى
    Button2ينتظر من أجل اتصالات العميل
    Button3قطع اتصال الملقم
  8. إضافة عنصر تحكم إلى النموذج . تتم إضافة عنصر التحكم Label1 إلى النموذج Form1.
العودة إلى الأعلى

إضافة كافة التعريفات إلى وحدة نمطية في تطبيق Windows

لإضافة التعريفات الدالة المطلوبة لتطبيق الاتصال interprocess بواسطة استخدام توجيه الإخراج المسمى, اتبع الخطوات التالية:
  1. في حلول Explorer، انقر بزر الماوس الأيمن فوق أشر إلى , وانقر ثم.
  2. في مربع الحوار , انقر فوق .
  3. قم بإضافة التعليمة البرمجية التالية إلى الوحدة النمطية :
    Public Const FILE_ATTRIBUTE_NORMAL As Short = &H80SPublic Const FILE_FLAG_NO_BUFFERING As Integer = &H20000000Public Const FILE_FLAG_WRITE_THROUGH As Integer = &H80000000Public Const PIPE_ACCESS_DUPLEX As Short = &H3SPublic Const PIPE_READMODE_MESSAGE As Short = &H2SPublic Const PIPE_TYPE_MESSAGE As Short = &H4SPublic Const PIPE_WAIT As Short = &H0SPublic Const INVALID_HANDLE_VALUE As Short = -1Declare Function CreateNamedPipe Lib "kernel32" Alias "CreateNamedPipeA" _(ByVal lpName As String, ByVal dwOpenMode As Integer, _ByVal dwPipeMode As Integer, ByVal nMaxInstances As Integer, _ByVal nOutBufferSize As Integer, ByVal nInBufferSize As Integer, _ByVal nDefaultTimeOut As Integer, ByVal lpSecurityAttributes As IntPtr _) As IntegerDeclare Function ConnectNamedPipe Lib "kernel32" _    (ByVal hNamedPipe As Integer, ByVal lpOverlapped As Integer) As IntegerDeclare Function DisconnectNamedPipe Lib "kernel32" _    (ByVal hNamedPipe As Integer) As IntegerDeclare Function WriteFile Lib "kernel32" _(ByVal hFile As Integer, ByRef lpBuffer() As Byte, _ByVal nNumberOfBytesToWrite As Integer, ByRef lpNumberOfBytesWritten As Integer, _ByVal lpOverlapped As Integer _) As IntegerDeclare Function ReadFile Lib "kernel32" _(ByVal hFile As Integer, ByRef lpBuffer As Integer, _ByVal nNumberOfBytesToRead As Integer, ByRef lpNumberOfBytesRead As Integer, _ByVal lpOverlapped As Integer _) As IntegerDeclare Function FlushFileBuffers Lib "kernel32" _    (ByVal hFile As Integer) As IntegerDeclare Function CloseHandle Lib "kernel32" _    (ByVal hObject As Integer) As Integer
العودة إلى الأعلى

كتابة تعليمات برمجية لإنشاء ملقم توجيه إخراج مسمى

بعد إنشاء توجيه إخراج مسمى أو انتظر حتى الاتصالات من قبل العميل. عندما يتصل العميل إلى الملقم، قراءة أو كتابة البيانات عبر أنبوب الاتصال. للقيام بهذا، اتبع الخطوات التالية:
  1. في حلول Explorer، انقر بزر الماوس الأيمن فوق " ، ومن ثم انقر فوق .
  2. في طريقة العرض " تصميم " للنموذج " ، انقر نقراً مزدوجاً أو ثم ثم أضف التعليمات البرمجية التالية إلى إجراء :
    Dim openMode, pipeMode As Integer'Create the named pipeopenMode = PIPE_ACCESS_DUPLEX Or FILE_FLAG_WRITE_THROUGHpipeMode = PIPE_WAIT Or PIPE_TYPE_MESSAGE Or PIPE_READMODE_MESSAGEhPipe = CreateNamedPipe(pipeName, openMode, pipeMode, 10, 10000, 2000, 10000, IntPtr.Zero)Label1.Text = "Created the named pipe and waiting for the clients."Button1.Visible = FalseButton2.Visible = TrueButton3.Visible = True
  3. أضف التعليمات البرمجية التالية قبل إجراء :
    Private Const pipeName As String = "\\.\pipe\MyPipe"Private Const BUFFSIZE As Short = 10000Private Buffer(BUFFSIZE) As BytePrivate hPipe As Integer
  4. في حلول Explorer، انقر نقراً مزدوجاً فوق .
  5. في طريقة العرض " تصميم " للنموذج Form1 " ، انقر نقراً مزدوجاً , ثم ثم أضف التعليمات البرمجية التالية إلى إجراء :
    Dim byteCount, i, res, cbnCount As IntegerFor i = 0 To BUFFSIZE - 1 'Fill an array of numbers   Buffer(i) = i Mod 256Next i'Wait for a connection, block until a client connectsLabel1.Text = "Waiting for client connections"Me.Refresh()Do   res = ConnectNamedPipe(hPipe, 0)   'Read the data sent by the client over the pipe   cbnCount = 4   res = ReadFile(hPipe, byteCount, Len(byteCount), cbnCount, 0)   If byteCount > BUFFSIZE Then 'Client requested for byteCount bytes       byteCount = BUFFSIZE 'but only send up to 20000 bytes   End If   'Write the number of bytes requested by the client    res = WriteFile(hPipe, Buffer, byteCount, cbnCount, 0)   res = FlushFileBuffers(hPipe)   'Disconnect the named pipe.   res = DisconnectNamedPipe(hPipe)   'Loop until the client makes no more requests for data. Loop Until byteCount = 0Label1.Text = "Read or Write completed"Button2.Visible = False
  6. في طريقة العرض " تصميم " ، انقر نقراً مزدوجاً " ، ثم ثم أضف التعليمات البرمجية التالية إلى إجراء :
    Button2.Visible = FalseButton3.Visible = False
  7. في حلول Explorer، انقر نقراً مزدوجاً فوق .
  8. في طريقة العرض " تصميم " للنموذج Form1 " ، انقر نقراً مزدوجاً , ثم ثم أضف التعليمات البرمجية التالية إلى إجراء :
    Dim res As Integer'Close the pipe handle when the client makes no requestsCloseHandle(hPipe)Label1.Text = "Disconnected the named pipe"
  9. في القائمة , انقر فوق .
العودة إلى الأعلى

إنشاء عميل توجيه إخراج مسمى

لإنشاء عميل توجيه إخراج مسمى الذي يتصل مع الملقم, اتبع الخطوات التالية:
  1. استدعاء دالة لإنشاء مؤشر إلى توجيه الإخراج المسمى.
  2. استدعاء دالة أو الدالة للاتصال عبر أنبوب الاتصال.
  3. استدعاء دالة على مؤشر تم إنشاؤه في الدالة .
يمكنك أيضاً استخدام عملية توجيه إخراج مسمى للاتصال عميل / ملقم. يضم المعاملة توجيه إخراج مسمى عملية كتابة و عملية قراءة في عملية شبكة اتصال فردية. يمكن استخدام إحدى المعاملات فقط على توجيه إخراج أنواع الرسائل أو مزدوجة. عمليات يمكن استخدام الدالة أو الدالة لتنفيذ العمليات توجيه الإخراج المسمى.

في هذه العينة الرمز, الذي استخدم الدالة إلى كتابة البيانات في الإخراج، تتصل بالملقم توجيه إخراج مسمى و ثم قراءة البيانات من توجيه الإخراج.

العودة إلى الأعلى

تصميم تطبيق ذو نهاية خلفية Windows الذي يتصل مع ملقم توجيه إخراج مسمى

لتصميم تطبيق Visual Basic.NET أو Windows 2005 Visual Basic التي تستخدم في الاتصال إلى الملقم توجيه الإخراج المسمى اتبع هذه الخطوات:
  1. ابدأ تشغيل Microsoft Visual Studio.NET أو Microsoft Visual Studio 2005.
  2. ثم في القائمة أشر إلى , وانقر .
  3. ضمن , انقر فوق " ، ومن ثم انقر فوق تحت .

    ملاحظة في Visual Studio أو 2005 فوق Visual Basic ضمن أنواع Project .
  4. في المربع , اكتب MyClientApp، ومن ثم انقر فوق . افتراضياً، يتم إنشاء نموذج الذي يدعى Form1.
  5. إضافة عنصر تحكم إلى النموذج Form1.
  6. انقر بزر الماوس الأيمن فوق , ومن ثم انقر فوق .
  7. تعيين الخاصية في .
  8. إضافة عنصر تحكم إلى النموذج Form1. تتم إضافة عنصر التحكم Label1 إلى النموذج .
  9. تعيين الخاصية لعنصر التحكم Label1 على .
  10. إضافة عنصري تحكم إلى النموذج Form1.
العودة إلى الأعلى

كتابة تعليمات برمجية للاتصال ملقم توجيه إخراج مسمى

الاتصال إلى ملقم توجيه الإخراج باستخدام الدالة . يكتب الدالة إلى أنبوب الاتصال, بعد الاتصال إلى الملقم، في يقرأ من الإخراج، ويقوم ثم إغلاق توجيه الإخراج. في تتصل بالملقم أو قراءة أو كتابة البيانات, ثم اتبع الخطوات التالية:
  1. في طريقة العرض " تصميم " ، انقر نقراً مزدوجاً , ثم ثم أضف التعليمات البرمجية التالية إلى إجراء :
    Dim i, res, cbRead,numBytes As IntegerDim bArray() As ByteDim temp As StringnumBytes = CInt(TextBox1.Text)If numBytes < 0 Then    MessageBox.Show("Value must be at least 0.", MsgBoxStyle.OKOnly)    Exit SubEnd IfIf numBytes = 0 Then    Label1.Visible = True    Label1.Text = "The connection to the server is disconnected."    Button1.Visible = False    TextBox1.Visible = False    TextBox2.Visible = FalseEnd IfIf numBytes > BUFFSIZE Then    numBytes = BUFFSIZEEnd IfReDim bArray(numBytes) 'Create the return buffer'Call the CallNamedPipe function to do the transactions res = CallNamedPipe(pipeName, numBytes, Len(numBytes), bArray(0), numBytes, cbRead, 30000) 'Wait up to 30 seconds for a response'Format the data received, and then display the data in the text boxIf res > 0 Then    temp = Format(bArray(0), " 000")    For i = 1 To cbRead - 1       If (i Mod 16) = 0 Then temp = temp & vbCrLf          temp = temp & " " & Format(bArray(i), "000")    Next i    TextBox2.Text = tempElseMessageBox.Show("Error number " & Err.LastDllError & _"while trying to call the CallNamedPipe function.", MsgBoxStyle.OKOnly)End If
  2. أضف التعليمات البرمجية التالية قبل إجراء :
    Private Const pipeName As String = "\\.\pipe\MyPipe"Private Const BUFFSIZE As Integer = 10000Private hpipe As Integer    Public Const INVALID_HANDLE_VALUE As Short = -1Public Declare Function CallNamedPipe Lib "kernel32" Alias "CallNamedPipeA" _(ByVal lpNamedPipeName As String, _ByRef lpInBuffer As Integer, _ByVal nInBufferSize As Integer, _ByRef lpOutBuffer As Byte, _ByVal nOutBufferSize As Integer, _ByRef lpBytesRead As Integer, ByVal nTimeOut As Integer) As Integer
  3. في القائمة , انقر فوق .
العودة إلى الأعلى

تحقق من أن يعمل التعليمة البرمجية

للتحقق من عمل التعليمات البرمجية اتبع هذه الخطوات:
  1. لبدء تطبيق الملقم, انقر فوق في القائمة ضمن المشروع MyServerApp .
  2. في النموذج، Form1 انقر فوق , ومن ثم انقر فوق . التطبيق يتم حظر الآن ثم ينتظر العميل للاتصال.
  3. لبدء تطبيق العميل, انقر فوق في القائمة ضمن المشروع MyClientApp .
  4. في النموذج، Form1 اكتب 10 في مربع ومن ثم انقر فوق . يمكنك مشاهدة صفيف وحدات البايت التي تم تلقيها في المربع .
  5. لقطع تطبيق العميل من الملقم، اكتب 0 في مربع في تطبيق العميل, ومن ثم انقر فوق .
  6. أغلق تطبيق العميل.
  7. لإلغاء ثم قطع اتصال نهاية ملقم توجيه الإخراج المسمى, وإغلاق تطبيق الملقم, انقر فوق على نموذج Form1 من تطبيق الملقم.
العودة إلى الأعلى
مراجع
للحصول على مزيد من المعلومات, يمكنك زيارة مواقع ويب Microsoft Developer Network (MSDN) التالية:
توجيهات الإخراج المسماة
http://msdn2.microsoft.com/en-us/library/aa365590.aspx
المعاملات على توجيهات الإخراج المسماة
http://msdn2.microsoft.com/en-us/library/aa365789.aspx
العودة إلى الأعلى

تحذير: تمت ترجمة هذه المقالة تلقائيًا

خصائص

رقم الموضوع: 871044 - آخر مراجعة: 01/11/2007 06:36:07 - المراجعة: 2.4

Microsoft Visual Basic 2005, Microsoft Visual Basic .NET 2003 Standard Edition, Microsoft Visual Basic .NET 2002 Standard Edition

  • kbvs2005swept kbvs2005applies kbserver kbpipes kbipc kbclient kbhowtomaster kbhowto KB871044 KbMtar kbmt
تعليقات
amp;t=">>sync=""> var varAutoFirePV = 1; var varClickTracking = 1; var varCustomerTracking = 1; var Route = "76500"; var Ctrl = ""; document.write(" >}}" href="" ng-click="setLanguage(language);" class="ng-binding" id="language-es-py">Paraguay - Español
Venezuela - Español
mp;t=">/html>4050&did=1&t=">p;t=">/html>