You must set up a raw UDP socket on both ends (on the server and the server browser) specifically for pinging/ponging, separate from any existing connections you are using. You can use the ENet socket functions to do this. Once there, you have two options:

1. Have each of these UDP sockets bound to the same address/port. If you use the SO_REUSEADDR option, you can have multiple programs bound to the same host AND port on a single computer or network, and they will all still get a packet so long as it is sent to the broadcast address. Send out a ping packet periodically to the broadcast address and this specific port the pong sockets are listening on, and have them reply to the sender with their port, if necessary, address as well.

2. Set up multicasting (would require some work outside of the ENet socket functions), then pretty much do as above, sending out the ping to the specific multicasting address instead of
the broadcast address.

The broadcast with SO_REUSEADDR approach is what I have used so far to date, and it is probably
easiest.

Lee

Ben Johnson wrote:
Hey all.. I know ENET_PORT_BROADCAST doesn't exist. But is there something similar? Suppose I'm at a LAN party and there are many servers running my game. But they're all running with different/unknown ports. I can use ENET_HOST_BROADCAST to find the IP.. but it seems I need to know the exact port that is being used to find the server. I could do a loop and scan through every IP from 1 to 65535, but that'd be silly. Furthermore, even if I did know the port.. using ENET_HOST_BROADCAST will stop searching once the first server has replied, yes? What would be the best way to continue searching so I can connect to (and request server info from) all the possible servers on the LAN. Thanks! Ben.
_______________________________________________
ENet-discuss mailing list
[email protected]
http://lists.cubik.org/mailman/listinfo/enet-discuss

Reply via email to