简体   繁体   中英

How to find ip addresses with BSD sockets?

I am using BSD sockets over a wlan. I have noticed that my server computer's ip address changes occasionally when I connect to it. The problem is that I enter the ip address into my code as a literal string. So whenever it changes I have to go into the code and change it there. How can I change the code so that it will use whatever the ip is at the time? This is the call in the server code

if ((status = getaddrinfo("192.168.2.2", port, &hints, &servinfo)) != 0)

and the client side is the same. I tried NULL for the address on both sides, but the client will not connect and just gives me a "Connection refused" error.

Thanks for any help.

Use a domain name that can be looked up in your hosts file or in DNS, rather than an IP address.

How about a command line parameter?

int main( inr argc, char* argv[] ) {
    const char* addr = "myfancyhost.domain.com"; /* default address */
    if ( argc > 1 ) {
        addr = argv[1]; /* explicit address */
    }
    if ((status = getaddrinfo(addr, ...

Give your server a name, and use gethostbyname to find its address (and, generally, put the server name into a configuration file instead of hard-coding it, though hard-coding a default if you can't find the config file doesn't hurt).

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM