C ++停止不返回任何内容的函数

时间:2013-12-11 14:15:49

标签: c++

我有一个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卡住了程序。如果在某个时间内没有得到回应,谁能阻止这项功能呢?

1 个答案:

答案 0 :(得分:4)

这是connect()声明:

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

只需提供第三个参数,应该停止连接。