
网络
文章平均质量分 78
Pregunta
1
展开
-
I/O完成端口模型
问题现在网络游戏很流行,上万个玩家同时在线的情况很常见,网游服务器如何处理这么巨量的数据?!要是读过了"Winsock I/O方法"这篇文章,可以了解到套接字I/O模型中的:select,WSAAsyncSelect,WSAEventSelect,Overlapped I/O模型一次最多都只能支持6 4个套接字!这些模型显然不能胜任。而Winsock I/O模型中的"Completion port转载 2008-02-25 11:25:00 · 717 阅读 · 0 评论 -
Socket中如何设置连接超时
把优快云与中文yahoo翻了底朝天,也没找到如何设置socket的连接超时的满意方法,问此问题的兄弟已有一大堆,这里偶就讲一下win下如何设置socket的connect超时。设置connect的超时很简单,优快云上也有人提到过使用select,但却没有一个令人满意与完整的答案。偶所讲的也正是select函数,此函数集成在winsock1.1中,简单点讲,"作用使那些想避免在套接字调用过程中被转载 2008-02-25 17:52:00 · 778 阅读 · 1 评论 -
socket编程之完成端口(附一个简单的IOCP例子)
“完成端口”模型是迄今为止最为复杂的—种I/O模型。然而。假若—个应用程序同时需要管理为数众多的套接字,那么采用这种模型。往往可以达到最佳的系统性能,然而不幸的是,该模型只适用于以下操作系统(微软的):Windows NT和Windows 2000操作系统。因其设计的复杂性,只有在你的应用程序需要同时管理数百乃至上千个套接字的时候、而且希望随着系统内安装的CPU数量的增多、应用程序的性能也可以线性转载 2008-02-25 17:47:00 · 4863 阅读 · 1 评论 -
异步IO、APC、IO完成端口、线程池与高性能服务器(一~五)
异步IO、APC、IO完成端口、线程池与高性能服务器之一 异步IO背景:轮询 PIO DMA 中断 早期IO设备的速度与CPU相比,还不是太悬殊。CPU定时轮询一遍IO设备,看看有无处理要求,有则加以处理,完成后返回继续工作。至今,软盘驱动器还保留着这种轮询工作方式。 随着CPU性能的迅速提高,这种效率低下的工作方式浪费了大量的CPU时间。因此,中断工作方式开始成为普遍采用的技术。这种转载 2008-02-25 17:36:00 · 1332 阅读 · 0 评论 -
一个对Winsock 完成端口模型封装的类
源代码说明: 在WINDOWS下进行网络服务端程序开发,毫无疑问,Winsock 完成端口模型是最高效的。Winsock的完成端口模型借助Widnows的重叠IO和完成端口来实现,完成端口模型懂了之后是比较简单的,但是要想掌握Winsock完成端口模型,需要对WINDOWS下的线程、线程同步,Winsock API以及WINDOWS IO机制有一定的了解。如果不了解,推荐几本书:《Inside转载 2008-02-25 12:36:00 · 1543 阅读 · 0 评论 -
理解I/O Completion Port(完成端口)
作者:Dung Hennig 译者:fbilo CursorAdapter 类是 VFP 8 中最重要的新功能之一,因为它提供了一种简单易用、接口统一的访问远程数据源方式。在这个月的文章里,Dung Hennig 将向你展示 CursorAdapter 及它的工作方式。下个月,我们将再学习一些高级的用法。 正文: 越来越多的 VFP 程序员开始把他们的数据储存到象 SQL Server 或者 Or转载 2008-02-25 11:37:00 · 728 阅读 · 0 评论 -
Winsock工作模型
首先得弄清楚同步、异步、阻塞、非阻塞的概念。同步和异步是针对通讯的工作模式,阻塞和非阻塞是指socket的I/O操作。实际上对于socket,只存在阻塞和非阻塞,同步与异步是在程序实现上有所不同。以阻塞的方式执行recv函数,在没有收到数据前,此函数是不会返回的,所以这很容易执行函数的线程处于等待I/O上的数据状态,然后被挂起。非阻塞就不一样,执行recv时候不管有没有数据都立即返回,有数据时转载 2008-02-25 11:33:00 · 485 阅读 · 0 评论 -
完成端口相关API介绍
在Windows系统里,使用完成端口是高性能的方法之一,比如把完成端口使用到线程池和网络服务器里。现在就通过线程池的方法来介绍怎么样使用完成端口,高性能的服务器以后再仔细地介绍怎么样构造它。其实完成端口是一个队列,所有的线程都在等消息出现,如果队列里有消息,就每个线程去获取一个消息执行它。先用函数CreateIoCompletionPort来创建一个消息队列,然后使用GetQueuedComple转载 2008-02-25 11:32:00 · 675 阅读 · 0 评论 -
Winsock I/O方法
套接字模式:锁定、非锁定套接字I/O模型: select(选择)WSAAsyncSelect(异步选择)WSAEventSelect(事件选择)Overlapped I/O(重叠式I / O)Completion port(完成端口) 一、 简介 套接字模型的出现,是为了解决套接字模式存在的某些限制。所有Wi n d o w s平台都支持套接字以锁定或非锁定方式工作。然而,并非每种平台都转载 2008-02-25 11:21:00 · 586 阅读 · 0 评论 -
在完成端口IOCP模型判断客户端是否已关闭连接(掉线)
判断客户端是否关闭: 1 GetQueuedCompletionStatus 返回 FALSE,根据错误号判断。 2 客户端端定时发送(也就是心跳包判断)补:GetQueuedCompletionStatus 的返回值为 ERROR_SUCCESS 和lpNumberOfBytes 为0的时,客户端sockt关闭。在测试的时候,连接的客户端发生异常崩溃,强制关闭客户端后,GetQueu转载 2008-02-25 17:54:00 · 1719 阅读 · 0 评论