所以我一直在研究套接字和其他东西,主要是 C++。我已经学会了(尚未执行,因为我很懒)非阻塞 IO,一旦我真正开始处理我的项目,我可能只有一个非常好的整体结构,服务器可以容纳很多客户端。
对于服务器,它始终是给定的,我必须转发。客户不需要。但这让我开始思考。Torrent 客户端通常似乎不需要路由器端口转发,而且它们是对等的。那么它是如何工作的?在客户端周围多次看到“端口转发”。但那是一种什么样的端口转发呢?
我在这里错过了一些非常明显的东西还是只是问了错误的问题?我似乎无法找到任何答案。
那么点对点的端口转发是如何工作的呢?如果那是正确的事情甚至问。
感谢您的时间!
关键是要在终端中制作这种小型多人游戏,应用一些基本的图形概念来掌握其工作方式及其背后的数学原理。
请注意,我希望这样做很有趣,并且我充分意识到有比使用终端更好的替代方法。
我需要一个可以写入的控制台,所以重点是要删除滚动条并将整个缓冲区打印到屏幕上。
这看起来很难看:
尝试了大约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_PROCESSING,mode |= DISABLE_NEWLINE_AUTO_RETURN | …