Solved

Multiple TCP clients within a single app?

Posted on 2010-08-12
3
402 Views
Last Modified: 2012-06-21
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.

Thanks!
0
Comment
Question by:JasonWilliam
  • 2
3 Comments
 
LVL 3

Accepted Solution

by:
arthurmnev earned 500 total points
ID: 33422463
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.

0
 
LVL 3

Expert Comment

by:arthurmnev
ID: 33422587

http://msdn2.microsoft.com/en-us/library/system.net.sockets.tcpclient.beginconnect.aspx

http://msdn2.microsoft.com/en-us/library/system.net.sockets.networkstream.beginread.aspx

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)
        Debug.Print("DataArrival")

        numberOfBytes = IQPStream.EndRead(dr)

        ' At this instant DataBuffer variable is filled with the received data
        IQPStream.Flush()

        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

0
 

Author Comment

by:JasonWilliam
ID: 33425455
Yep.  That's the ticket.  Thanks Art!
0

Featured Post

Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction When many people think of the WebBrowser (http://msdn.microsoft.com/en-us/library/2te2y1x6%28v=VS.85%29.aspx) control, they immediately think of a control which allows the viewing and navigation of web pages. While this is true, it's a…
Microsoft Reports are based on a report definition, which is an XML file that describes data and layout for the report, with a different extension. You can create a client-side report definition language (*.rdlc) file with Visual Studio, and build g…
Established in 1997, Technology Architects has become one of the most reputable technology solutions companies in the country. TA have been providing businesses with cost effective state-of-the-art solutions and unparalleled service that is designed…

789 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question