摘要:该是windows网络编程第二版里面提到过。现在整理一下。 1:在IOCP中投递WSASend返回WSA_IO_PENDING的时候,表示异步投递已经成功,但是稍后发送才会完成。这其中涉及到了三个缓冲区。 网卡缓冲区,TCP/IP层缓冲区,程序缓冲区。 情况一:调用WSASend发送正确的时候(即立即返回,且没有错误),TCP/IP将数据从程序缓冲区中拷贝到TCP/IP层缓冲区中,...
阅读全文
摘要:分类: C++ Win322009-10-25 16:10 3348人阅读 评论(6) 收藏 举报 今天在写一个SetWinEventHook的程序时,编译通过,link时,弹出了如下的错误: Linking... uuid.lib(oleidl_i.obj) : fatal error LNK1103: debugging information corrupt; recom...
阅读全文
摘要:一. 摘要 Raw Socket: 原始套接字 可以用它来发送和接收 IP 层以上的原始数据包, 如 ICMP, TCP, UDP... int sockRaw = socket(AF_INET, SOCK_RAW, IPPROTO_RAW); 这样我们就创建了一个 Raw Socket Sniffer: 嗅探器 关于嗅探器的原理我想大多数人可能都知...
阅读全文
摘要:分类: 每日学习笔记2009-11-30 21:17 993人阅读 评论(0) 收藏 举报 用户异常掉线检测 David.Zhu 2005/6/1 目前主要有三种方法来实现用户掉线检测:SO_KEEPALIVE ,SIO_KEEPALIVE_VALS 和Heart-Beat线程。 下面我就上面...
阅读全文
摘要:2010-09-03 20:39 218016人阅读 评论(6) 收藏 举报 VC6.0 最新的 SDK platform sdk xp-sp2 官方下载地址 20:19:09 2010-09-03 可见微软已经不再对 VC6 支持了,最新的 SDK 已经不能在 VC6 上使用。但是还是可以找到支持 VC6 的最后两个版本: For Server2003 3790.0 RTM:...
阅读全文
摘要:2010-03-15 17:47:16| 分类: IOCP编程 | 标签: |字号大中小 订阅 在前一篇文章《WinSock2编程之打造完整的SOCKET池 》中,介绍了WinSock2的一些新函数,并重点详细介绍了什么是SOCKET池,有了这个概念,现在就接着展开更深入的讨论。 首先这里要重点重申一下就是,SOCKET池主要指的是使用面向连接的协议的情况下,最常用的就是需要管理大量的TC...
阅读全文
摘要:new / delete malloc / free CoTaskMemAlloc / CoTaskMemFree IMalloc::alloc / IMalloc/free GlobalAlloc / GlobalFree LocalAlloc / LocalFree HeapAlloc / HeapFree VirtualAlloc / VirtualF...
阅读全文
摘要:2010-03-19 17:04:04| 分类: 游戏引擎编程|字号 订阅 写了很多关于IOCP和OLEDB的文章,今天换个话题,不然很多网友都以为俺就是一服务端程序,其实我真正的身份是——程序员,什么都写的程序员,呵呵呵。 这回讨论的话题主要集中到游戏引擎上来,目前国内游戏行业比较火爆,但是基础性的研究、技术资料都比较少,本人撰写这个系列,权当为产业尽绵薄之力。或者当做引玉之砖吧。 关于...
阅读全文
摘要:2008年10月11日 星期六 下午 04:43 在Win32的GUI程序中,没有控制台窗口,我们输出调试信息时有些不方便,以往我的做法是使用MessageBox弹出对话框、OutputDebugString向VS的调试窗口输出信息等,但总感觉不如控制台输出几句printf有效率。经过尝试发现GUI程序照样能够拥有(且仅能够拥有一个)控制台窗口,具体做法如下: #include <locale...
阅读全文
摘要:研究了几天IOCP的模型,参考了很多大牛的文章,有了点自己的感觉,于是把心得写下来,算是记录一下成长的过程,也希望用最直观的图的形式让以后的人更直观的明白IOCP的基本原理,其实IOCP有很多实现的方式,先说一下第一种比较基本的ICOP,这种理解之后其他的就很容易理解了。:) 先看一下我绘制的一个原理图,图应该更容易理解一下,绘制了1个多小时呢,水平有限,高手莫怪。 流程图解释———— ...
阅读全文
摘要:http://h-lm.spaces.live.com/blog/cns!C523F565A10E3B66!824.entry 2008/11/11 实现UDP IOCP心得 当前许多资料都是介绍TCP的IOCP的实现,UDP的较少。 1.很多人在讨论UDP是否需要IOCP。 借http://jlbookworm.spaces.live.com/blog/cns!ef3e777c2448...
阅读全文
摘要:IOCP在网络应用中常见错误分析 原创文章 JohnsonFeng@yeah.net 致力于网络游戏服务器.客户端引擎开发 IOCP是一种异步套接字体机制,它是Windows系统中管理异步IO操作的API。使用IOCP,应用程序可以发送一个耗时的请求,然后执行其他的任务,而这个请求在内核执行,调用相应的驱动程序完成IO操作各个步骤。在大规模C/S架构的系统中,完成端口经常用于管理大量Sock...
阅读全文
摘要:原文: 理解 I/O Completion Port (IOCP完成端口) 欢迎阅读此篇IOCP教程。我将先给出IOCP的定义然后给出它的实现方法,最后剖析一个Echo程序来为您拨开IOCP的谜云,除去你心中对IOCP的烦恼。OK,但我不能保证你明白IOCP的一切,但我会尽我最大的努力。以下是我会在这篇文章中提到的相关技术: I/O端口 同步/异步 堵塞/非堵塞...
阅读全文
摘要:2011-03-22 08:55 by 横刀天笑, 3223 visits, 收藏, 编辑 本文首发在IT168 写这个系列原本的想法是讨论一下.NET中异步编程风格的变化,特别是F#中的异步工作流以及未来的.NET 5.0中的基于任务的异步编程模型。但经过三篇文章后很多人对IO异步背后实现的原理以及为什么这样能提高性能很感兴趣。其实我本不想花更多的文字在这些底层实现的细节上,一来我并不擅长...
阅读全文
摘要:这句话不错::你这种实现方式是非常低效的,这里要进行的耗时操作属于IO操作,不是计算密集型,可以不分配线程给它 2011-02-22 08:15 by 横刀天笑, 6512 visits, 收藏, 编辑 在上一篇文章中,我们从构建响应灵敏的界面以及构建高可伸缩性的服务应用来讨论我们为什么需要异步编程,异步编程能给我们带来哪些好处。那么知道了好处,我们就开始吧,但是在异步编程这个方面,说...
阅读全文
摘要:分类: Windows 网络编程2009-12-18 09:56 721人阅读 评论(1) 收藏 举报 Windows NT和Windows 2000的套接字架构 对于开发大响应规模的Winsock应用程序而言,对Windows NT和Windows 2000的套接字架构有基本的了解是很有帮助的。 与其他操作系统不同的是,WinNT和Win2000的传输协议层并不直接给应用程序提供socke...
阅读全文
摘要:分类: Windows C++ Program2011-02-13 23:18 51人阅读 评论(0) 收藏 举报 view plain void Ansi2Unicode(PCHAR Src, PWCHAR Dst) { wsprintfW(Dst, L"%S", Src); } void Unicode2Ansi(PWCHAR ...
阅读全文
摘要:今天记录一下长久以来屡次犯的错,每次都是换一种方法编码来绕过这个问题实现功能的,因为这个问题太过隐蔽,导致今天才发现其中真正的原因...下面进行问题描述: 1std::map<std::string, Value> keyValue; // 在函数内部分配的堆栈对象(局部变量) 2ReadData(keyValue);// 从dll中导出的函数 3keyValue.clear(); ...
阅读全文
摘要:分类: 架构、协议与网络2005-07-10 19:51 6371人阅读 评论(4) 收藏 举报 本文作者:sodme 本文出处:http://blog.csdn.net/sodme 声明:本文可以不经作者同意任意转载、复制、传播,但任何对本文的引用均须注明本文作者、出处及本行声明信息。谢谢! 封包分析的手段,说简单也挺简单的,那就是:比较!要不断地从不同的思维角度对封包进行对比分...
阅读全文
摘要:分类: 架构、协议与网络2005-06-18 16:26 27299人阅读 评论(13) 收藏 举报 本文作者:sodme 本文出处:http://blog.csdn.net/sodme 声明:本文可以不经作者同意任意转载,但任何对本文的引用都须注明作者、出处及此声明信息。谢谢!! 特别声明: 本人非常欣赏暴雪及他们的游戏,之所以写这个文章,是想让大家了解一些网络封包分析方面...
阅读全文
摘要:分类: 架构、协议与网络2004-08-26 13:18 3119人阅读 评论(0) 收藏 举报 从昨晚七点,到今天上午11点,先后对大厅和房间服务器进行了重构,重构后的代码结构清晰了,效率也提高了,觉得这次的重构过程很有意义,所以记录下来以备查。 在原有的大厅服务器中,原有的设计是使用统一的一个TUSER对象管理底层数据的接收以及高层对TUSER进行的逻辑层的属性读写操作,不管是玩家正常连接...
阅读全文
摘要:分类: 架构、协议与网络2004-06-23 00:07 4094人阅读 评论(6) 收藏 举报 接触了一段时间的网游封包设计,有了一些初步的思路,想借这篇文章总结一下,同时也作个记录,以利于以后更新自己的思路。 网络游戏的技术研发,分为三个主要的方面:服务器设计,客户端设计,数据库设计。而在服务器和客户端之间实现游戏逻辑的中介则是游戏数据包,服务器和客户端通过交换游戏数据包并根据分析得...
阅读全文
摘要:2005-01-18 10:39 2795人阅读 评论(1) 收藏 举报 计算机专业英语名词解释 1、公司及其商标名 Microsoft: 有时缩略为MS,是全球最著名的软件商,美国软件巨头微软公司的名字。Microsoft其实是由两个英语单词组成:Micro意为“微小”,Soft意为“软的”,此处应为“Software,软件”,顾名思义,微软(Microsoft)是专门生产软件的公司。当今...
阅读全文
摘要:分类: 架构、协议与网络2005-09-27 23:44 5379人阅读 评论(2) 收藏 举报 最近看代码,感慨很多。作一个高性能的网络通信模块,除了要选择高性能的网络通信模型之外,同样重要的就是:你的内存(缓冲区)是如何管理的。 在网络通信模型方面,现在的技术都是比较成熟的了,在win下使用iocp,在linux下使用epoll。它们的使用方法,相对来说,还是比较有章可循的。 ...
阅读全文
摘要:在求知的过程中,我们经常会要面对这样,那样的诱惑。 以读书为例,一部经典的好教材,想要把它读通,搞明白,弄扎实,除了在读的过程中理解作者想要描述 的字面意思以外,往往还需要通过作大量的相关习题及实验来建立起更为扎实,深刻的认识,而捧着厚厚 的一本书,人类心理潜在的占有本能又往往会驱使着自己以最快的速度将这部教材拿下,满足自己的成 就感,于是在没有外人监督,没有外力监控的情况...
阅读全文
摘要:void AFXAPI AfxInitThread() { if (!afxContextIsDLL) { // set message filter proc _AFX_THREAD_STATE* pThreadState = AfxGetThreadState(); ASSERT(pThreadS...
阅读全文
摘要:_AFX_THREAD_STATE { AFX_MODULE_STATE* m_pModuleState; AFX_MODULE_STATE* m_PreModuleState; } 线程状态类 AFX_MODULE_STATE { CWinApp* m_pCurentWinApp; HINSTANCE m_hCurrentInstanceHa...
阅读全文