关于网络编程的bind

img

我想通过指定IP和任意IP的方式来实现我的程序,当我指定ip地址的时候,执行如下语句

if(ip != "")server_addr.sin_addr.s_addr = inet_addr("101.43.172.168");

这时我下面的bind()就返回-1,程序就出错了。

而我不指定ip地址的时候

 else server_addr.sin_addr.s_addr = htonl(INADDR_ANY);

也就是走这条语句,程序就可以正常运行,正常bind(),请问这是什么原因呢?

其中,101.43.172.168是我腾讯云的外网地址,我的程序也是在这个云服务器上面跑的

指定或不指定ip,有c++的默认参数,为什么还要自己写if-else?