I'm not quite sure if you understand the client/server relationship in DataSocket correctly, but I will just rehash it to clarify what I mean in my answers to your questions. With DataSocket you only create applications that are clients, the server is just a communication hub that manages sockets in which multiple clients can share data.
So what you should do to see when a connection is successful, is in each respective client handle their DS_EVENT_STATUSUPDATED event inside of its DataSocket callback function. You shouldn't really need to check to see from each of the clients whether another client is online.
If you want to do something of that fashion you can set up a specific DataSocket that is designated to hold a value that will show if a client(s) is online or not, note though that DataSocket is a "data sharing" protocol and is not really intended to provide all of the connection management attributes you get with TCP/IP. If you need more control of things like this than I highly suggest using TCP/IP in CVI instead, so that you can write a server yourself that can keep track of host names that connect to it, just take a look at the examples in the cvi\samples\tcp directory.
Now, as far as passing structures through DataSocket, you don't really want to try and pass the entire structure as a single data object. DataSocket is an ActiveX technology and being as such only supports the native datatypes associated with it, which includes variants. Now you could try packaging your structure into a variant and it would be transmitted back and forth fine, but you would have to be absolutely sure that any subscribing application to this data object knows the exact makeup of this variant, otherwise you will quickly run into compatibility problems, and on top of that the amount of programming and management of your data can get rather complex really quick. What I suggest you do instead is pass the main field of your structure as the actual data value for the datasocket, and then pass the rest of the fields in the structure as attributes of this data value making it relatively easy to obtain all of your structure's information.
Jason F.
Applications Engineer
National Instruments
www.ni.com/ask