Multithreaded Tcp Server Socket Program RRS feed

  • Question

  • I am an experienced C# developer, but I have not developed a TCP server application so far. Now I have to develop a highly scalable and high performance server that can handle at least 5-10 thousand concurrent connections: getting -raw byte- data via GPRS from GPS devices.

    A common communication process should look like this:

    • GPS device initiates a connection to my server
    • my server answers if authendicated device
    • device send GPS data
    • device send device id once when it starting connection
    • my server sends report to the device about getting it (sg like checksum)
    • getting new data from GPS, reportm and this happens again and again
    • later GPS DEVICE closes the connection

    So, in my server I need

    • trace connected/active clients
    • to close any client from server side
    • catch the event, when a device closes the connection
    • get byte data
    • send data to clients

    I started to read about this topic over the internet, but it seems to be a nightmare for me. There are a lot of ways, but I could not find out which is the best.

    Async socket methods seems the best for me, but writing code in this async style is terrible and not easy to debug.

    So my quetsion is: which do you think the best way to implement a high performance TCP server in C#? Do you know any good open source component to do this? (I tried several ones, but I could not find a good one.)

    Thanks in advance, any expert answers would be appriciated!


    Monday, November 26, 2012 8:27 AM