Sign in to follow this  
rKallmeyer

2 Networking questions

Recommended Posts

rKallmeyer    396
I have two networking questions, the first is much easier then the second. I've been looking through documentation but because of the .net framework help getting in the way of basic socket programming my search has been less then fruitful. 1- I'm looking for a function(or set of functions) that can receive a hostname or socket_addr and convert it into a string of characters representing an IP address. example:
// something like
char my_ip_string[256];
hosttoip("www.gamedev.net", &my_ip_string)
// my_ip_string = "123.45.67.8910"

2- This one I beleive will be more difficult if not impossible. I would like to enumerate (fill a list) will the IP's of all the computers on a windows network. To be honest I have no idea where to begin. All I really need is a push in the right direction, so if you would rather post a tutorial then code that's perfectly fine. Thanks.

Share this post


Link to post
Share on other sites
Telastyn    3777
gethostbyname() iirc is the function for 1.

For 2, there's possibly a nice windows function to do such a thing, but more than likely there's various nasty ways. I will search for the easy way. [edit: ah, msdn has the NetBIOS SDK documentation. It jogged my memory that NetBIOS is transport independant, so a host on the windows network is not guaranteed to have an IP address.]

Share this post


Link to post
Share on other sites
rKallmeyer    396
After doing some research last night I realized that I didn't really ask the right question. The function I was looking for in question 1 was inet_toa().

For the second question, I really don't need the IP's of all the other comps on the network, just the hostname. In my 'Join Multiplayer Game' window, I would like to supply a list of hosts on the local network to join to save the user the time to type in the hostname or IP themselves. The nmap.org site looks promissing but seems like overkill for my simple problem. I was hoping that a simple windows control existed that would enumerate other comps on the network, but I guess not?

Share this post


Link to post
Share on other sites
kseh    3840
On the same line of questions,

If I use gethostbyname() on my computer I get something like "computername.telus.net" but if I use it on other people's machine I just get "computername". How do I make sure I get the complete name?

Share this post


Link to post
Share on other sites
SpaceDude    208
So essentially you are looking to set up a way for players to play over LAN?

There must be a way since almost every commercial game that supports multiplayer has a LAN option where you can see all the games hosted over the LAN.

I am interested in this too, if anybody has a tutorial for this :P since i suppose its quite a common thing to do.

Share this post


Link to post
Share on other sites
hplus0603    11356
You don't want a list of ALL MACHINES, right? You only want a list of all machines running your game (and, potentially, only those that have started to Host a Game).

The way this is done in a LAN is by using UDP broadcast. When hosting a game, send a broadcast packet every 4 seconds containing the game name and other stats. On the browse screen for the clients, listen to all broadcasts on whatever port you're using, and use the address you get from ::recvfrom() to identify the hosting machine, and the data in the packet to identify the name and stats of the game.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this