Solved

Connect to multiple Tcp Servers

Posted on 2010-09-20
2
495 Views
Last Modified: 2012-06-27

Hello.

I want to connect to multiple TCP/IP servers at the same time.(Different IPs, same port)

When there is one server  my code is like:
TcpClient = new TcpClient()
client.GetStream().BeginRead(readBuffer, 0, 1024, newAsyncCallback(GetFromServer), null);

Now for multiple servers do i need to create  a TcpClient list ? Do i need to worry about thread safety ?

Frankly i could not decide how to design.
0
Comment
Question by:parabellum
  • 2
2 Comments
 
LVL 16

Accepted Solution

by:
kris_per earned 500 total points
ID: 33715483
To connect to multiple servers at the same time, you need to create multiple TcpClient instances in a thread.

Folllowing is a model using threads:
public class ServerIno
        {
            public string Address;

            // add any other server info here
        }

        [STAThread]
        static void Main()
        {
            List<ServerIno> listServerInfo = new List<ServerIno>();
            listServerInfo.Add(new ServerIno { Address = "10.10.10.10" });

            for(int s=0; s < listServerInfo.Count; s++)
            {
                Thread t = new Thread(DoWork);
                t.Start(listServerInfo[s]);
            }
        }

        public static void DoWork(object data)
        {
            ServerIno si = (ServerIno)data;

            int portNumber = 25; // use the correct port number here
            TcpClient client = new TcpClient(si.Address, portNumber);

            // use client object to send messages to server and get response from server here
        }

Open in new window

0
 
LVL 16

Expert Comment

by:kris_per
ID: 33715518

Above sample doesn't need to do anything special for thread safety. But depending on further requirement (that will make threads to update a shared variable), then you need to consider thread-safetry issues.
0

Featured Post

Netscaler Common Configuration How To guides

If you use NetScaler you will want to see these guides. The NetScaler How To Guides show administrators how to get NetScaler up and configured by providing instructions for common scenarios and some not so common ones.

Question has a verified solution.

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

Summary: Persistence is the capability of an application to store the state of objects and recover it when necessary. This article compares the two common types of serialization in aspects of data access, readability, and runtime cost. A ready-to…
This article aims to explain the working of CircularLogArchiver. This tool was designed to solve the buildup of log file in cases where systems do not support circular logging or where circular logging is not enabled
Although Jacob Bernoulli (1654-1705) has been credited as the creator of "Binomial Distribution Table", Gottfried Leibniz (1646-1716) did his dissertation on the subject in 1666; Leibniz you may recall is the co-inventor of "Calculus" and beat Isaac…
With Secure Portal Encryption, the recipient is sent a link to their email address directing them to the email laundry delivery page. From there, the recipient will be required to enter a user name and password to enter the page. Once the recipient …

803 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