Şu anda çevrimdışısınız; İnternet'in yeniden bağlanması bekleniyor

Visual Basic 2005 veya Visual Basic. NET'te işlemler arası iletişim için adlandırılmış yöneltme nasıl kullanılır

ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.

Makalenin İngilizcesi aşağıdaki gibidir:871044
Özet
Bu adım adım makalede adlandırılmış yöneltmeler Microsoft Visual Basic 2005 veya Microsoft Visual Basic. NET'te işlemler arası iletişim için nasıl kullanılacağı anlatılır. Bu makalede, Visual Basic 2005 veya Visual Basic. NET'te bir adlandırılmış yöneltme kullanarak, istemci/sunucu iletişimini gösteren bir kod örneğini içerir. Bu makalede, bir adlandırılmış yöneltme sunucusu ve bir adlandırılmış yöneltme istemcisi oluşturarak, ara işlem iletişimi anlatılmaktadır. Kanal üzerinden iletişim aşağıdaki şekilde gerçekleştirilir:
  • Oluşturma adlandırılmış bir kanal.
  • Kadar bir istemci bağlandıktan ConnectNamedPipe işlevini kullanarak sunucu uygulamasını engelleyecek.
  • Bağlanma, sunucu kullanarak CallNamedPipe işlevi.
  • ReadFile işlevini veya üzerinden iletişim kurmak için WriteFile işlevini çağırın. kanal.
  • Tamamlandığında işlemi kullanarak DisconnectNamedPipe işlevini çağırın. yöneltme.
  • Sonra tamamlandı üzerinden iletişimde adlandırılmış yöneltme üzerinde CloseHandle işlevini çağırın. yöneltme.
Giriş
Adlandırılmış yöneltme, bir yöneltme sunucusu ve bir veya daha fazla yöneltme istemcisi arasındaki iletişim için tek yönlü veya çift yönlü bir kanal ' dir. Adlandırılmış Yöneltmeler kullanıcı, aynı bilgisayardaki işlemler arasında veya bir ağ üzerinden farklı bilgisayarlardaki işlemler arasındaki iletişimi sağlamak için kullanabilirsiniz. "Yöneltme sunucusu adlı" bir işlem bir adlandırılmış yöneltme oluşturur ve "kanal istemci adlı" adlandırılmış yöneltme örneğine bağlayan bir işlem başvurduğu terimi başvurduğu bir terim.

Diğer işlemler için adlandırılmış yöneltme kullanarak iletişim kuran uygulamaları oluşturmak için Microsoft Visual Basic .NET'i veya Microsoft Visual Basic 2005 kullanabilirsiniz. Bu makalede, iki Visual Basic .NET veya Visual Basic 2005 Windows uygulamalar arasında iletişim kurmak için adlandırılmış yöneltme kullanan örnek bir kod içerir.

back to the top

Gereksinimler

Bu makalede, aşağıdaki konularda bilgi sahibi olduğunuz varsayılmaktadır:
  • Windows uygulamaları
  • Visual Basic .NET programlama
  • Kanalları kullanarak
Aşağıdaki listede, gereksinim duyacağınız donanım, yazılım, ağ altyapısı ve hizmet paketleri önerilmektedir:
  • Microsoft Visual Studio .NET veya Microsoft Visual Studio 2005
  • Microsoft .NET framework
back to the top

Bir adlandırılmış yöneltme sunucusu oluşturma

Bir adlandırılmış yöneltme sunucusu oluşturun ve sonra istemciyle kanal iletişim kurmak için aşağıdaki adımları izleyin:
  1. Adlandırılmış Yöneltme oluşturur.
  2. Sunucu, istemcinin bağlandığı kadar engellemek için ConnectNamedPipe işlevini çağırın.
  3. ReadFile işlevini veya kanal iletişim kurmak için WriteFile işlevini çağırın.
  4. Kanal kullanma, işlem sona erdiğinde DisconnectNamedPipe işlevini çağırın.
  5. CloseHandle işlevi, adlandırılmış yöneltme arayın.
back to the top

Bir adlandırılmış yöneltme sunucusu bir Windows uygulaması tasarlama

Visual Basic .NET veya Visual Basic 2005 kullanarak bir adlandırılmış yöneltme sunucusu oluşturan bir Windows uygulaması tasarlamak için aşağıdaki adımları izleyin:
  1. Microsoft Visual Studio 2005 ya da Microsoft Visual Studio. NET'i başlatın.
  2. Dosya menüsünde Yeni ' nin üzerine gelin ve sonra Project ' i tıklatın.
  3. Altında Project Types, Visual Basic Projects ' ı tıklatın ve şablonları altında Windows uygulama ' yı tıklatın.

    NotVisual Basic, Visual Studio 2005'te Project Types altında tıklatın.
  4. Adı kutusuna, MyServerApp yazın ve Tamam ' ı tıklatın. Varsayılan olarak, Form1 adlı bir form oluşturulur.
  5. Üç Düğme denetimi Form1 forma ekleyin.
  6. Görünüm) menüsünde, Özellikler penceresini tıklatın.
  7. Düğme denetimlerin metin özelliği için aşağıdaki değerleri ayarlayın:
    AdıMetin
    Button1Adlandırılmış Yöneltme oluşturur.
    BUTTON2Istemci bağlantıları için bekleyin.
    Button3Sunucu bağlantısını kes
  8. Bir Etiket denetimi Form1 forma ekleyin. Label1 Etiket denetimi forma Form1 eklenir.
back to the top

Tüm bildirimleri <a0>Windows</a0> uygulamasındaki bir modüle ekleyin

Adlandırılmış yöneltme kullanarak bir işlemler arası iletişim uygulamak için gerekli olan işlev bildirimleri eklemek için aşağıdaki adımları izleyin:
  1. Solution Explorer'da (Çözüm Gezgini), MyServerApp sağ tıklatın, sonra da Ekle işaret ve Modül Ekle</a1>'ı tıklatın.
  2. Add New ıtem - MyServerApp iletişim kutusunda ' ı tıklatın.
  3. Add the following code to the Module1.vb module:
    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
back to the top

Bir adlandırılmış yöneltme sunucusu oluşturmak için kod yazma

Adlandırılmış Yöneltme oluşturduktan sonra istemciden gelen bağlantılar için bekleyin. Istemci, sunucuya bağlandığında, okuma ya da kanal veri yazma. Bunu yapmak için şu adımları izleyin:
  1. Solution Explorer'da (Çözüm Gezgini), Form1 ' ı sağ tıklatın ve sonra da ' ı tıklatın.
  2. Tasarım görünümünde <a0>Form1</a0> formunun <a1>Oluştur</a1> bir adlandırılmış yöneltme'ı çift tıklatın ve sonra da Button1_Click yordamına aşağıdaki kodu ekleyin:
    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. Önce Button1_Click yordamına aşağıdaki kodu ekleyin:
    Private Const pipeName As String = "\\.\pipe\MyPipe"Private Const BUFFSIZE As Short = 10000Private Buffer(BUFFSIZE) As BytePrivate hPipe As Integer
  4. Solution Explorer'da Form1.vb çift tıklatın.
  5. In Design view of the Form1 form, double-click Wait for the client connections, and then add the following code to the Button2_Click procedure:
    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. Tasarım görünümünde Form1 ' ı çift tıklatın ve sonra da Form1_Load yordamına aşağıdaki kodu ekleyin:
    Button2.Visible = FalseButton3.Visible = False
  7. Solution Explorer'da Form1.vb çift tıklatın.
  8. Tasarım görünümünde <a0>Form1</a0> formunun, sunucu bağlantıyı kes ' i çift tıklatın ve sonra da Button3_Click yordamına aşağıdaki kodu ekleyin:
    Dim res As Integer'Close the pipe handle when the client makes no requestsCloseHandle(hPipe)Label1.Text = "Disconnected the named pipe"
  9. Yapı) menüsünde, Build Solution ' ı tıklatın.
back to the top

Bir adlandırılmış yöneltme istemcisi oluştur

Sunucuyla iletişim kuran bir adlandırılmış yöneltme istemci oluşturmak için aşağıdaki adımları izleyin:
  1. Adlandırılmış kanal için bir tanıtıcı oluşturmak üzere CreateFile işlevini çağırın.
  2. ReadFile işlevini veya kanal iletişim kurmak için WriteFile işlevini çağırın.
  3. CreateFile işlevinde oluşturulan tutamacı CloseHandle işlevini çağırın.
Bir adlandırılmış kanal işlemi, istemci/sunucu iletişim için de kullanabilirsiniz. Adlandırılmış kanal işlemi, yazma işlemi ve tek bir ağ işleminde bir okuma işlemi birleştirir. Bir hareketi yalnızca bir çift yönlü, ileti türü Yöneltme üzerinde kullanılabilir. Işlemler, TransactNamedPipe işlevi veya CallNamedPipe işlevi, adlandırılmış yöneltme işlemleri gerçekleştirmek için kullanabilirsiniz.

Bu kod örneğinde, adlandırılmış yöneltme sunucusuna, kanal için verileri yazın ve sonra da verileri kanaldan okuma CallNamedPipe işlevini kullanın.

back to the top

Adlandırılmış yöneltme sunucusu ile iletişim kuran bir Windows uygulaması tasarlama

Adlandırılmış Yöneltme sunucusuna bağlanmak için kullanılan bir Visual Basic .NET veya Visual Basic 2005 Windows uygulaması tasarlamak için aşağıdaki adımları izleyin:
  1. Microsoft Visual Studio 2005 ya da Microsoft Visual Studio. NET'i başlatın.
  2. Dosya menüsünde Yeni ' nin üzerine gelin ve sonra Project ' i tıklatın.
  3. Altında Project Types, Visual Basic Projects ' ı tıklatın ve şablonları altında Windows uygulama ' yı tıklatın.

    NotVisual Basic, Visual Studio 2005'te Project Types altında tıklatın.
  4. Adı kutusuna, MyClientApp yazın ve Tamam ' ı tıklatın. Varsayılan olarak, Form1 adlı bir form oluşturulur.
  5. Bir Düğme denetimi Form1 forma ekleyin.
  6. Button1 ' ı sağ tıklatın ve sonra da Properties ' i tıklatın.
  7. Metin özelliği, sunucu bağlanma ayarlayın.
  8. Bir Etiket denetimi Form1 forma ekleyin. Label1 Etiket denetimi forma Form1 eklenir.
  9. Label1 Etiket denetiminin Visible özelliğini false olarak ayarlayın.
  10. Iki TextBox Form1 forma ekleyin.
back to the top

Adlandırılmış Yöneltme sunucusuna bağlanmak için bir kod yazın.

CallNamedPipe işlevini kullanarak adlandırılmış yöneltme sunucusuna bağlanın. Sunucuya bağlanıyor sonra CallNamedPipe işlevi, kanala yazma kanaldan okur ve sonra kanal kapatır. Sunucuya bağlanmak ve okunamıyor veya verileri yazmak için aşağıdaki adımları izleyin:
  1. In Design view, double-click Connect to the server, and then add the following code to the Button1_Click procedure:
    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. Önce Button1_Click yordamına aşağıdaki kodu ekleyin:
    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. Yapı) menüsünde, Build Solution ' ı tıklatın.
back to the top

Kodun çalışıp çalışmadığını doğrulayın

Kodunuzu çalıştığını doğrulamak için <a0></a0>, aşağıdaki adımları izleyin:
  1. Sunucu uygulamasını başlatmak için <a0></a0>, MyServerApp proje Hata Ayıkla menüsünde Başlat ' ı tıklatın.
  2. Form1 formunda, <a1>Oluştur</a1> bir adlandırılmış yöneltme'u tıklatın ve sonra da <a2>Aranmayı Bekle istemci bağlantıları</a2>'ı tıklatın. Uygulama şimdi engellenir ve istemcinin bağlanmak için bekler.
  3. Istemci uygulamasını başlatmak için <a0></a0>, MyClientApp proje Hata Ayıkla menüsünde Başlat ' ı tıklatın.
  4. Form1 formdaki Metinkutusu1 kutusuna 10 ve sunucuya bağlan ' ı tıklatın. TextBox2 kutusunda alınan bayt dizisi görebilirsiniz.
  5. Istemci uygulaması sunucudan bağlantıyı kesmek için <a0></a0>, türü 0Metinkutusu1, istemci uygulamasında kutusunda ve sunucuya bağlan ' ı tıklatın.
  6. Istemci uygulamasını kapatın.
  7. Adlandırılmış yöneltme sunucusu sonuna sökün ve sunucu uygulaması'ı kapatmak için <a0>sunucu</a0> uygulamasının <a1>Form1</a1> formundaki <a1>Kes</a1> sunucu Ek Yardım düğmesini tıklatın.
back to the top
Referanslar
Daha fazla bilgi için aşağıdaki Microsoft Developer Network (MSDN) Web sitelerini ziyaret edin:
Adlandırılmış Yöneltmeler hareketleri
http://msdn2.microsoft.com/en-us/library/aa365789.aspx
back to the top

Uyarı: Bu makalenin çevirisi otomatik olarak yapılmıştır

Özellikler

Makale No: 871044 - Son İnceleme: 01/11/2007 06:36:07 - Düzeltme: 2.4

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

  • kbmt kbvs2005swept kbvs2005applies kbserver kbpipes kbipc kbclient kbhowtomaster kbhowto KB871044 KbMttr
Geri bildirim