随笔分类 - 网络编程
使用gulp构建一个项目
摘要:gulp是前端开发过程中自动构建项目的工具,相同作用的还有grunt。构建工具依靠插件能够自动监测文件变化以及完成js/sass/less/html/image/css/coffee等文件的语法检查、合并、重命名、压缩、格式化、浏览器自动刷新、部署文件等功能。 gulp是基于Nodejs的自动运行器
阅读全文
棋牌游戏服务器架构设计
摘要:一,棋牌类服务器的特点 1,棋牌类不分区不分服 一般来说,棋牌游戏都是不分区不分服的。所以棋牌类服务器要满足随着用户量的增加而扩展的需要。 2,房间模式 即在同一局游戏中就是在同一个房间中,同一个房间中的人可以接收到其他人的消息。 3,每个房间的操作必须是顺序性 这个特性类似与一般游戏的回合制,每个
阅读全文
LoadRunner培训初级教程
摘要:一 LoadRunner简介1.1 Loadrunner介绍LoadRunner是 HP Mercury Interactive用来测试应用程序性能的工具 LoadRunner 通过模拟一个多用户并行工作的环境来对应用程序进行负载测试。通过使用最少的硬件资源,这些虚拟用户提供一致的、可重复并可度量的...
阅读全文
一些iOS高效开源类库
摘要:KissXml——xml解析库相关教程:http://www.iteye.com/topic/625849http://sencho.blog.163.com/blog/static/83056228201151743110540/很方便的一个xml解析器,支持Xpath查询。skpsmtpmessage——Quick SMTP邮件发送svn checkout http://skpsmtpmessage.googlecode.com/svn/trunk/ skpsmtpmessage-read-onlygithub: git clone https://github.com/kailoa/..
阅读全文
[转]IOCP--Socket IO模型终结篇
摘要:完成端口程序的执行步骤:1) 创建一个完成端口。第四个参数保持为0,指定在完成端口上,每个处理器一次只允许执行一个工作者线程。2) 判断系统内到底安装了多少个处理器。3) 创建工作者线程,根据步骤2 )得到的处理器信息,在完成端口上,为已完成的I / O请求提供服务。在这个简单的例子中,我们为每个处理器都只创建一个工作者线程。这是由于事先已预计到,到时不会有任何线程进入“挂起”状态,造成由于线程数量的不足,而使处理器空闲的局面(没有足够的线程可供执行)。调用C r e a t e T h r e a d函数时,必须同时提供一个工作者例程,由线程在创建好执行。本节稍后还会详细讨论线程的职责。4)
阅读全文
[转]异步IO、APC、IO完成端口、线程池与高性能服务器
摘要:异步IO、APC、IO完成端口、线程池与高性能服务器之一 异步IO背景:轮询 PIO DMA 中断早期IO设备的速度与CPU相比,还不是太悬殊。CPU定时轮询一遍IO设备,看看有无处理要求,有则加以处理,完成后返回继续工作。至今,软盘驱动器还保留着这种轮询工作方式。 随着CPU性能的迅速提高,这种效率低下的工作方式浪费了大量的CPU时间。因此,中断工作方式开始成为普遍采用的技术。这种技术使得IO设备在需要得到 服务时,能够产生一个硬件中断,迫使CPU放弃目前的处理任务,进入特定的中断服务过程,中断服务完成后,再继续原先的处理。这样一来,IO设备和CPU 可以同时进行处理,从而避免了CPU等待I
阅读全文
Windows系统编程之异步I/O和完成端口 [北极星2003 看雪论坛]
摘要:一、同步I/O和异步I/O在介绍这部分内容之前先来认识下“异步I/O”。说起异步IO,很容易联想到同步I/O,对于同一个I/O对象句柄在同一时刻只允许一个I/O操作,其原理如下图所示:显然,当内核真正处理I/O的时间段(T2~T4),用户线程是处于等待状态的,如果这个时间段比较段的话,没有什么影响;倘若这个时间段很长的话,线程就会长时间处于挂起状态。事实上,该线程完全可以利用这段时间用处理其他事务。异步I/O恰好可以解决同步I/O中的问题,而且支持对同一个I/O对象的并行处理,其原理如下图所示:异步I/O在I/O请求完成时,可以使用让I/O对象或者事件对象受信来通知用户线程,而用户线程中可以使
阅读全文
vs2010下libevent的使用
摘要:下载最新的libevent,目前是 libevent-2.0.20-stable.tar.gz修改“D:\libevent-2.0.10-stable\event_iocp.c”、“D:\libevent-2.0.10-stable \evthread_win32.c”、“D:\libevent-2.0.10-stable\listener.c”三个文件,在文件开头分别加上一 行: #define _WIN32_WINNT 0x0500在Makefile.nmake中的CFLAGS中加入/ZI选项,同时去掉/Ox优化选项,这样生成的lib库会带有调试信息进入VS2010命令提示切换到libev
阅读全文
boost::asio - 常用方法
摘要:域名解析boost::asio::io_serviceio_service;tcp::resolverresolver(io_service);tcp::resolver::queryquery(tcp::v4(),argv[1],"daytime");tcp::resolver::iteratorendpoint_iterator=resolver.resolve(query);tcp::resolver::iteratorend;tcp::socketsocket(io_service);boost::system::error_codeerror=boost::asi
阅读全文
ENet library compilation record
摘要:附加依赖项odbc32.lib odbccp32.lib enet.lib添加#include <winsock2.h>#pragma comment(lib, "Ws2_32.lib ")#pragma comment( lib, "winmm.lib" )#pragma comment(linker,"/NODEFAULTLIB:libc.lib")(以此记录)
阅读全文
ENET 1.3.3 VC2005 下使用
摘要:添加#pragma comment(lib,"ws2_32.lib")#pragma comment(lib,"winmm.lib")如果要用Sleep(大写)则添加#define WIN32_LEAN_AND_MEAN#include <windows.h>忽略特定库/NODEFAULTLIB:libcmt.lib
阅读全文
可靠的UDP编程(ENET库)
摘要:大家都知道UDP这个东西太不可靠了,存在着乱序,丢包,包重复等缺点,但它的速度快,包有界等优点,但在实际编程中要自己处理乱序啊之类的问题会发疯的。也许大家说用TCP就得了,第一点TCP的速度比较慢,第二个TCP是一个数据流一样的东西,我们要传数据的话还得处理数据的分界问题,也挺麻烦的。 针对这个问题,ENET这个库实现了一个性能介于TCP与UDP之间,完成可靠(不丢包,按序),保持数据的分界的优点。编程起来也挺方便的。下载到http://enet.bespin.org/SourceDistro.html,目前最新版本是1.2,然后按照说明编译出库出来。 使用ENET库就可以实际可靠的UDP编程
阅读全文
boost.asio服务器使用io_service作为work pool
摘要:使用io_service作为处理工作的work pool,可以看到,就是通过io_service.post投递一个Handler到io_service的队列,Handler在这个io_service.run内部得到执行,有可能你会发现,io_services.dispatch的接口也和io_service.post一样,但不同的是它是直接调用而不是经过push到队列然后在io_services.run中执行,而在这个示例当中,显然我们需要把工作交到另一个线程去完成,这样才不会影响网络接收线程池的工作以达到高效率的接收数据,这种设计与前面的netsever其实相同,这就是典型的Half Sync
阅读全文
boost高并发网络框架+线程池
摘要:boost的官方例子,有单线程的网络框架,httpserver2是线程池的。下面参照网上某人的代码修改了一点(忘了哪位大仙的代码了)测试工具,适用stressmark,测试效果非常好, 9000个/s#include<stdio.h>#include"AuthenHandle.h"#include"configure.h"#ifdefWIN32//forwindowsnt/2000/xp#include<winsock.h>#include<windows.h>#include"gelsserver.h&qu
阅读全文
很幽默的讲解六种Socket IO模型(转)(Delphi版本)[转]
摘要:很幽默的讲解六种Socket IO模型(转)本文简单介绍了当前Windows支持的各种Socket I/O模型,如果你发现其中存在什么错误请务必赐教。 一:select模型 二:WSAAsyncSelect模型 三:WSAEventSelect模型 四:Overlapped I/O 事件通知模型 五:Overlapped I/O 完成例程模型 六:IOCP模型 老陈有一个在外地工作的女儿,不能经常...
阅读全文
DELPHI Winsock完成端口[转]
摘要:用DELPHI开发网络代码已经有一段时间了!我发现在网上用VC来实现完成端口(IOCP)的代码很多,但是使用DELPHI来实现的就比较少了。对IOCP讲的清楚的就更少了。在这里我把自己编写DELPHI下的IOCP写出来,希望对刚学完成端口的朋友有个帮助。首先我们来了解一些在使用IOCP的时候需要使用的一些结构!(1):单IO数据结构 LPVOID = Pointer; LPPER_IO_OPERA...
阅读全文
P2P之UDP穿透NAT原理并有UDP打洞的源码[转]
摘要:首先先介绍一些基本概念: NAT(Network Address Translators),网络地址转换:网络地址转换是在IP地址日益缺乏的情况下产生的,它的主要目的就是为了能够地址重用。NAT分为两大类,基本的NAT和NAPT(Network Address/Port Translator)。 最开始NAT是运行在路由器上的一个功能模块。 最先提出的是基本的NAT,它的产生基于如下事实:一个私有...
阅读全文
浙公网安备 33010602011771号