2013-12-11 101 views
0

我有一个C++程序,它检查一个端口是否打开或关闭给定的IP。我打算做的是检查哪个网络的IP是某个设备。C++停止函数,不返回任何东西

这是我的代码:

#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卡程序。如果在一定时间内没有得到回应,我可以阻止谁的功能?

+1

这将取决于您的SFML库。通过他们的文档查看连接的某种形式的超时() – dutt

回答

4

这里是connect()声明:

Status connect (const IpAddress &remoteAddress, unsigned short remotePort, Time timeout=Time::Zero) 

只需提供第三个参数,它应该停止自身进行连接。

+0

我试过但它给了我一个错误。取而代之,我已经完成了这个功能,但函数没有结束。 static bool port_is_open(const std :: string&address,int port) { sf :: Time timeout = sf :: Time :: Zero; 012(sf :: TcpSocket()。connect(address,port,timeout)== sf :: Socket :: Done); } – z4k4

相关问题