小编Tri*_*isT的帖子

点对点如何在网络/端口方面实际工作?

所以我一直在研究套接字和其他东西,主要是 C++。我已经学会了(尚未执行,因为我很懒)非阻塞 IO,一旦我真正开始处理我的项目,我可能只有一个非常好的整体结构,服务器可以容纳很多客户端。

对于服务器,它始终是给定的,我必须转发。客户不需要。但这让我开始思考。Torrent 客户端通常似乎不需要路由器端口转发,而且它们是对等的。那么它是如何工作的?在客户端周围多次看到“端口转发”。但那是一种什么样的端口转发呢?

我在这里错过了一些非常明显的东西还是只是问了错误的问题?我似乎无法找到任何答案。

那么点对点的端口转发是如何工作的呢?如果那是正确的事情甚至问。

感谢您的时间!

c++ sockets p2p

6
推荐指数
1
解决办法
594
查看次数

ENABLE_VIRTUAL_TERMINAL_PROCESSING和DISABLE_NEWLINE_AUTO_RETURN失败

关键是要在终端中制作这种小型多人游戏,应用一些基本的图形概念来掌握其工作方式及其背后的数学原理。

请注意,我希望这样做很有趣,并且我充分意识到有比使用终端更好的替代方法。

我需要一个可以写入的控制台,所以重点是要删除滚动条并将整个缓冲区打印到屏幕上。

但是由于字符返回到前一行的末尾时会出现回车,所以: 回车

这看起来很难看:

在此处输入图片说明

尝试了大约3个小时以通过SetConsoleMode进行此操作后,我不和谐地询问了它。

我得到的答案是:

void main( )
{
    auto h = GetStdHandle( STD_OUTPUT_HANDLE );

    DWORD mode = 0;
    GetConsoleMode( h, &mode );

    mode |= DISABLE_NEWLINE_AUTO_RETURN | ENABLE_VIRTUAL_TERMINAL_PROCESSING;

    puts( SetConsoleMode( h, mode ) ? "Win" : "Loss" );

    char * buf = new char[ 200*2 ];
    memset( buf, 0, 200*2 );
    memset( buf, 'A', 120*2 );
    std::cout << ( buf );

    getchar( );
}
Run Code Online (Sandbox Code Playgroud)

结果如下: 代码结果

最初,我尝试将其适应我的项目,但失败了。然后,我感到沮丧,最终创建了一个新项目,然后将粘贴的工作代码复制到该项目中。

您猜到了,它不起作用。

不工作

现在,我已经试过相当多的东西,我已经从Unicode改变了我的计划,以ANSI和背部,并做了mode = DISABLE_NEWLINE_AUTO_RETURN | ENABLE_VIRTUAL_TERMINAL_PROCESSINGmode |= DISABLE_NEWLINE_AUTO_RETURN | …

c++ windows terminal console winapi

4
推荐指数
1
解决办法
779
查看次数

标签 统计

c++ ×2

console ×1

p2p ×1

sockets ×1

terminal ×1

winapi ×1

windows ×1