• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 411
  • Last Modified:

Multiple TCP clients within a single app?

Hey guys.  Can someone direct me to some sample code that demonstrates how to initiate multiple TCP clients within a single application?  Each client needs to connect with a different server, but I need to manage all of it within a one VB.Net app.

  • 2
1 Solution
Here is one example:http://www.eggheadcafe.com/articles/20020323.asp

The example shows the use of TCPClient class -- to create multiple connections, you'd create multiple instances of this class and connect those to multiple end points.




This might get a little confusing if you don't fully understand the concept of
1) Async operations
2) Function pointers or delegates

Function pointer, is, essentially a variable that holds a reference to a function. The variable can be passed around and when executed it will execute the function to which it points.

Async operations in .net are usually based on the concept of passing a delegate / function pointer to a system managed function. When the system detects a condition, it triggers execution of your function.

To that end, when you begin doing BeginRead on a data stream from tcp client, you are telling the .net framework to execute your function when data shows up. This is important to understand if you have multiple connection streams all sending you the data..

' From http://social.msdn.microsoft.com/forums/en-US/netfxcompact/thread/d6156c86-6efc-429a-9ba5-510f5fba4c5a/
Public Class IQPSocket

    Dim IQPSocket As System.Net.Sockets.TcpClient
    Dim IQPStream As System.Net.Sockets.NetworkStream
    Dim DataBuffer(1024) As Byte
    Dim ByteRead As Integer

   Dim numberOfBytes As Integer

    Dim evtConnEstb As New AsyncCallback(AddressOf onConnectionEstablished)
    Dim evtDataArrival As New AsyncCallback(AddressOf DataProcessing)

    Dim IQPServer As String = My.Settings.iqp_svr
    Dim IQPPort As String = My.Settings.iqp_port

    Sub New()

        IQPSocket = New System.Net.Sockets.TcpClient

        ' IQPSocket.BeginConnect(IQPServer, IQPPort, evtConnEstb, Nothing)

         IQPSocket.Connect(IQPServer, IQPPort)

        Debug.Print("Conn:" & IQPSocket.Connected)
        IQPStream = IQPSocket.GetStream

        IQPStream.BeginRead(DataBuffer, 0, 1024, evtDataArrival, Nothing)

    End Sub

    Public Sub DataProcessing(ByVal dr As IAsyncResult)

        numberOfBytes = IQPStream.EndRead(dr)

        ' At this instant DataBuffer variable is filled with the received data

        IQPStream.BeginRead(DataBuffer, 0, 1024, evtDataArrival, Nothing)
    End Sub

    'Public Sub onConnectionEstablished(ByVal dr As IAsyncResult)
    '    Debug.Print("Connect Test Eventzd")
    'End Sub
'  ============================================

Open in new window

JasonWilliamAuthor Commented:
Yep.  That's the ticket.  Thanks Art!
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

The 14th Annual Expert Award Winners

The results are in! Meet the top members of our 2017 Expert Awards. Congratulations to all who qualified!

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now