这是我经历了几次,并在短暂的休息后,我回来了一个客户端的应用程序,但只是想在我实际执行任何事情之前记住一些事情。套接字C++ - 非阻塞或选择方法
我将在此讨论一个多客户端服务器,它处理通过TCP连接到服务器绑定端口的客户端。我记得使用select(),FD_ISSET,FD_ZERO,FD_SET进行编码 - 它是家族方法来接受和管理服务器上连接的客户端列表 - 我记得它工作得很好,但这次它是关于一个简单的32人RPG游戏 - 所以没有快节奏的,因此这里的TCP。
简单的GO_TO数据包,WEATHER更改,TIME更新,TEXT消息,项目状态更改和QUITS,LOGINS(广播)以及其他我现在找不到的东西。
什么阻止我今天睡觉是我应该真正选择让这台服务器平稳运行(当谈到它的网络性能时)。
人们倾向于通过使用ioctlsocket(..)或其他一些“线程”怪物来说明套接字的“非阻塞”方法,这些方法是做这件事的,但是您必须以不同的风格来控制它们,并且是的,我已经尝试过这种方式,并看到了许多方法 - 处理应用程序中的许多线程 - 什么是真正的过分复杂...
我也看到了那些MSDN“ASYNCHROUNOUS”套接字,从插座 - 但这是我想的太多了。
因此,而不是编码,我想,很想问,
如果选择()游戏服务器说话的时候可以做的伎俩,处理假设那些32名选手simultanously。我在这里的意思是你如何从你的经历中思考,这是否会做到这一点?或者我将不得不在最后回滚并修改整个服务器代码,同时关闭截止日期。
做select/ioctlsocket究竟有什么区别?
这两种方法有什么优点和缺点?
很多很多非常感谢任何答复,我希望我清楚我在问什么。
在处理和网络代码之间放置了一个抽象层。这样你可以稍后开启网络层。 – 2012-02-06 21:13:49