Domanda

Most of the examples online are examples of a multithreaded tcp server, whereby the server listens for multiple incoming connections from the client.

What I'm looking for is for the "server", to initiate the connections. If I have 100 devices (all different IP address of course), my server will have to make 100 individual connections to each device and receive data from the devices.

This is how I would make my connection to a device

_socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
_socket.SetSocketOption(SocketOptionLevel.Tcp, SocketOptionName.NoDelay, true);
_socket.SendTimeout = 2000;
_socket.ReceiveTimeout = 2000;
_socket.Connect(new IPEndPoint(IPAddress, TCPPort));

But I would like to know if there's any component out there, that would fulfill the following

  • establish as many tcp connections as I want to the devices
  • receive & send data through the connection
  • handle tcp timeouts/disconnects/etc & re-establish connection to the IP

If there aren't any of such components, are there any tips as to how I should go about doing it? e.g., 1 connection per thread, or how do I handle if the data is received in multiple packets, etc?

Any insights would be greatly appreciated

È stato utile?

Soluzione

There are several existing components out there that you could use to achieve what you want. Checkout http://www.networkcomms.net and http://code.google.com/p/lidgren-network-gen3/.

Having said that people always prefer to add that there is nothing stopping you writing everything from scratch yourself as per the example you give.

Disclaimer: I'm a developer for NetworkComms.Net.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top