After working with several network libraries, I liked TNet's ease of getting going. It's helping me get our prototype up and running more quickly from the networking side. Given that, I've got my eye on the next set of networking items I need to address, and wanted to get some feedback on the whether TNet can be set up or customized to help, or any suggestions on alternatives that can work alongside.
We have software where one player is the authoritative server, and all the other players connect to the master player instance. The interface is very Windows-like, unique to each user, and dynamically generated; so we don't have any synchronized network objects. All communication is done via custom message passing using RFC over a command channel. Also, we need to be able to transfer digital assets between server instance and player instances, and vice versa. This is done via an RFC over an asset channel. I've currently got this part working.
So, to the questions:
1. Can TNet be configured to accept both IPv4 and IPv6 connections? (I have concerns that people only on IPv4 internally on their LANs may not be able to connect to an IPv6 only server. Or maybe someone more network fluent can correct my view.)
2. Are the channels in TNet considered reliable? (i.e. as long as connection maintained, messages will retry until delivered or connection ends.)
3. Is the data in TNet channels delivered sequentially? (i.e. Data is received in order sent.) (I assume this might be different between TCP and UDP servers, but not sure.)
4. Are channels and/or RFCs handled separately for balancing throughput (or QoS)? (i.e. if one channel is very busy/full/blocked, messages to the other channels are still being interleaved and delivered.) (We would like file asset transfers to not block command channel.) (Eventually, we might look to streaming music/video/etc through another channel.)
5. We are looking to set up a facilitator server to handle NAT traversal by exchanging IPs/ports, as well as provide some basic presence and game tracking services. Is this something already built into TNet, or any suggestions? If so, best place to see examples. (Already aware of built-in UPnP for IPv4. We have this in a current product, and we need simpler user connections.) If so, can this be done for both IPv4 and IPv6?
My apologies if I missed some of this stuff in documentation or examples, and appreciate pointers to existing material. Thanks to anyone who can offer some insight.
Regards,
JPG