【问题标题】:Reasons SFML TCPListener would fail to bind to port?SFML TCPListener 绑定端口失败的原因?
【发布时间】:2016-02-06 22:47:32
【问题描述】:

我刚刚开始接触网络,但我确实了解这些术语。我正在使用 Visual C++ 2015 中的 SFML 2.3.2 启动一个 Server-Multiple 客户端项目,并做到了这一点:

#include "stdafx.h"
#include <iostream>
#include "SFML/Network.hpp"

const unsigned short PORT = 5000;

void Server(void)
{
    sf::SocketSelector TCPSelect;

    // Add listener
    sf::TcpListener TCPListen;
    if (!TCPListen.listen(PORT))
    {
        std::cout << "Failed to bind Listener on port " << PORT << std::endl;
    }
}

int main()
{
    Server();
    return 0;
}

输出:无法在端口 5000 上绑定监听器


我在其他小型网络项目中使用过 5000 端口,但这是我第一次使用 TcpListener。我尝试按原样运行代码并使用 main() 中的所有内容。直接打印 TCPListen.listen 时,它会返回错误状态代码。当然,我尝试了不同的端口,有些是在我的路由器上转发的,有些不是(如果重要的话)。

这是关于我的代码的问题吗? (如果是,有什么方法可以解决?)或者这是其他问题?

【问题讨论】:

  • 如果它真的失败了,原因会在errno, 中给出,它应该包含在您的错误消息中,通常是通过strerror()

标签: networking tcp port sfml


【解决方案1】:

我想我似乎已经回答了我自己的问题。我的错误是在设置我的错误消息时误解了有关 TcpListener 主题的文档。

如果一切正常,函数listen() 将返回0。我在调用listen()后通过打印监听器的端口来交叉检查,返回5000。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-14
    • 1970-01-01
    • 2012-07-22
    相关资源
    最近更新 更多