我有一个C ++程序,用于检查端口是否打开或关闭给定的IP。我打算做的是检查网络的哪个IP是某个设备。
这是我的代码:
#include <iostream>
#include <SFML/Network.hpp>
#include <string>
static bool port_is_open(const std::string& address, int port)
{
return (sf::TcpSocket().connect(address, port) == sf::Socket::Done);
}
int main()
{
std::cout << "Port 80 : ";
if (port_is_open("localhost", 80))
std::cout << "OPEN" << std::endl;
else
std::cout << "CLOSED" << std::endl;
return 0;
}
我的问题是当我检查一些没有任何设备的IP时,函数port_is_open卡住了程序。如果在某个时间内没有得到回应,谁能阻止这项功能呢?
答案 0 :(得分:4)
这是connect()
声明:
Status connect (const IpAddress &remoteAddress, unsigned short remotePort, Time timeout=Time::Zero)
只需提供第三个参数,应该停止连接。