我们学的网络编程是windows平台下的~学到了完成端口..
老师说完成端口机制是现在windows平台下C/S架构最好的选择了..
但是现在大部分的网络游戏服务器不都是用linux系统的吗?
所以就想了解一下这方面的问题
麻烦各位解答一下..
1.linux系统下C/S服务器的搭建选择什么机制?
2.该机制跟windows的完成端口来比有什么异同呢?
3.两者的运行效率高低如何?希望各位赐教,谢谢^_^

解决方案 »

  1.   

    linux系统下C/S服务器的搭建选择什么机制? 
    通过socket传输数据,linux只写server端不写client端. 该机制跟windows的完成端口来比有什么异同呢? 
    linux上不用iocp,用的是epoll效率不好说了吧...
      

  2.   

    效率最高的通用SOCKET编程是非阻塞传输
    但是最难掌握,什么时间传和怎么传以及什么时间调用收等,需要足够的经验
    我的经历
    阻塞socket-->CSocket->阻塞socket->异步socket->IOCP->非阻塞socket
     
    由于无论是UNIX/LINUX/WINDOWS,都支持非阻塞SOCKET,因此在兼容性和效率上都可以达到较好的程度
    我的经验是 必须自己编写引擎来使用非阻塞SOCKET,否则很难想象,代码也很难写LINUX下有些很有用的函数
    例如楼上说的EPOLL等,可以在某种程度上替代IOCP机制,反正底层都是要转化为IP包去发送的,顶多是响应速度的差别而已
      

  3.   

    我所知道的网游服务器很多是在Solaris,bsd上的..LZ不知道是不是把它们等同于linux了.
    unix下select/epoll/kqueue...
    但有款游戏叫wish的,却使用了ICE..使游戏不在有什么"区"的概念.
      

  4.   

    原来这样~看来还有很多种不同的操作系统跟机制用于server的搭建~
    我只是想了解一下..因为看到很多公司招聘服务器端程序员都要求精通linux下编程~
    所以我就以为linux搭建的服务器要比windows的可靠一些-_-#