The third approach I can think of is, to use UDP instead of TCP. The down side of this is that, the UDP protocol does not guarantee that the packet will be successfully delivered; The up side is that, you don't need to establish connection from time to time, or statically maintain connections. The decision really depends on whether you can tolerate the lost of some packets, and how good your network condition is.
Yes, i thought of UDP too, but i need a dialog (that is, server sends state and receive conformation or vice versa). So, i supppose UDP is not a choice.
Well, the server need to talk with about 100 clients every 1 min. Is it ok for the second approach?