我目前正在使用C ++编写.dll文件。基本上,对于我正在做的事情,如果我输入无效的IP,事情就会崩溃。那么如何验证IP是否有效?
我有没有办法ping IP,并检查是否有响应而没有向应用程序输出任何内容?
谢谢!
答案 0 :(得分:0)
第一个问题确实是"什么是有效的IP地址" - 技术上无效的,例如345.789.12.18
- 超出IP地址范围的值 - 或者超出网络覆盖范围的值(10.1.1.1
可能无法从您所在的位置访问,但是如果您在正确的网络上,技术上是一个有效的地址)。
我的建议真的是修复崩溃的应用程序,使其接受&#34;糟糕的IP&#34;地址以某种合理的方式(无效的IP地址给出错误,有效但无法到达会产生另一个错误,有效的那些没有&#34;响应&#34;还有另一个错误,有效的&#34;工作&#34;)。< / p>
是的,你可以ping一个提议的地址 - 一个简单的方法是if (system((std::string("ping -c 1 " + ip_address).c_str()) == 0) { ping was ok }
。
这种方法有几个问题。首先,地址可能是有效的,但是无法访问或有一些防火墙用于ping,但可用于您实际想做的任何事情。或者相反,它响应ping,但不响应您的请求。
其次,你有TOCTOU(使用时间检查时间)问题 - ping现在可以正常工作,但是当你在检查ping状态后尝试使用它时,你不会崩溃。
是的,编写处理错误情况的应用程序通常很难。但是你应该处理错误,而不是试图通过检查可能在以后发生变化的事情来阻止它们。