网络编程
文章平均质量分 79
simbi
232
展开
-
网络游戏的位置同步
有关位置同步的方案实际上已经比较成熟,网上也有比较多的资料可供参考。在《带宽限制下的视觉实体属性传播》一文中,作者也简单提到了位置同步方案的构造过程,但涉及到细节的地方没有深入,这里专门针对这一主题做些回顾。最直接的同步方案就是客户端在每次发生位置改变时都向服务器报告 ,服务器再转发给周围的其他玩家,其他客户端将对应的游戏实体移动到新的位置上。但是这样存在一个问题,转载 2011-11-01 17:34:01 · 390 阅读 · 0 评论 -
IO - 同步,异步,阻塞,非阻塞
同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO ,我相信这几个词困扰过很多人,更痛苦的是,如果你查阅过文献资料,你会发现不同的资料中的解释是不一样的,例如在wiki中,异步和非阻塞被当成了一个概念 。出现这种情况的原因,我认为很大程度上是因为IO这个概念本身就很宽泛,它其实包含了好几个层面。比如说转载 2009-11-11 17:24:00 · 384 阅读 · 0 评论 -
The C10K problem
[Help save the best Linux news source on the web -- subscribe to Linux Weekly News!] Its time for web servers to handle ten thousand clients simultaneously, dont you think? After all, the web is转载 2009-11-11 14:53:00 · 440 阅读 · 0 评论 -
一种经典的网络游戏服务器架构
首先,二话不说,上图(用Windows画图画的。。。)这个图是一个区的架构图,所有区的架构是一样的。上面虚线框的ServerGroup和旁边方框内的架构一样。图上的所有x N的服务器,都是多台一起的。红线,绿线,和蓝线图上也有图示,这里就不多介绍了。关于Agent Server大家也能看出来,其实就是Gate。这里主要介绍下图上的标记了号码的位置的数据连接的内容和意义。1- 这是一条WebSe原创 2009-11-09 23:43:00 · 445 阅读 · 0 评论 -
epoll精髓
在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且,在linux/posix_types.h头文件有这样的声明:#define __FD_S转载 2009-11-11 12:25:00 · 296 阅读 · 0 评论 -
epoll为什么这么快
epoll是多路复用IO(I/O Multiplexing)中的一种方式,但是仅用于linux2.6以上内核,在开始讨论这个问题之前,先来解释一下为什么需要多路复用IO.以一个生活中的例子来解释.假设你在大学中读书,要等待一个朋友来访,而这个朋友只知道你在A号楼,但是不知道你具体住在哪里,于是你们约好了在A号楼门口见面.如果你使用的阻塞IO模型来处理这个问题,那么你就只能一直守候在A号楼门口等待朋原创 2009-11-11 11:58:00 · 307 阅读 · 0 评论 -
EPOLL简单示例
epoll有两种模式,Edge Triggered(简称ET) 和 Level Triggered(简称LT).在采用这两种模式时要注意的是,如果采用ET模式,那么仅当状态发生变化时才会通知,而采用LT模式类似于原来的select/poll操作,只要还有没有处理的事件就会一直通知.以代码来说明问题:首先给出server的代码,需要说明的是每次accept的连接,加入可读集的时候采用的都是ET模式,原创 2009-11-11 11:52:00 · 444 阅读 · 0 评论 -
建立简单的IceGrid
关于什么是IceGrid,请参阅Ice-3.2.0文档或看这里。在这里,我将建立一个拥有一个registry和两个node的IceGrid,其中node1与registry运行在同一台计算机上(但不同进程,IP为192.168.3.95),node2运行在另一台计算机上(IP为192.168.3.68)。环境均为XP SP2+Ice 3.2.0。首先在D盘(可以任意)下建立目录MyI转载 2009-11-09 11:43:00 · 2265 阅读 · 0 评论 -
Icepatch2
一、问题的提出许多客户端/服务器软件都需要在服务器和客户端之间传输文件,有许多方法可以用来传输文件,如ftp,文件共享,但是都有各自的缺点。ftp需要安装ftp的服务器,还需要通过一个客户端来取得文件。文件共享的安全性又不好。本文描述一种使用ICE的IcePatch2服务来作为文件传输的方法,该方法特别适用于使用ICE作为中间件的软件的文件传输,如果再使用ICE的Gracier服务还可以转载 2009-11-06 15:56:00 · 876 阅读 · 0 评论 -
用gSOAP开发Web Service程序
gSOAP是一个绑定SOAP/XML到C/C++语言的工具,使用它可以简单快速地开发出SOAP/XML的服务器端和客户端。由于gSOAP具有相当不错的兼容性,通过gSOAP,我们就可以调用由Java, .Net, Delhpi, PHP等语言开发的SOAP服务,或者向它们提供SOAP服务。gSOAP是一个绑定SOAP/XML到C/C++语言的工具,使用它可以简单快速地开发出SOAP/XML的服转载 2010-01-27 14:13:00 · 923 阅读 · 0 评论 -
证书文件生成
也许很多人和本人一样深有体会,使用OpenSSL库写一个加密通讯过程,代码很容易就写出来了,可是整个工作却花了了好几天。除将程序编译成功外(没有可以使用的证书文件,编译成功了,它并不能跑起来,并不表示它能正常使用,所以......),还需生成必要的证书和私钥文件使双方能够成功验证对方。找了n多的资料,很多是说的很模糊,看了n多的英文资料,还是没有办法(不知道是不是外国朋友都比较厉害,不用说明得太清转载 2009-12-07 17:51:00 · 324 阅读 · 0 评论 -
WSDL实例解析
<br /><br />WSDL的主要文档元素<br /><br />WSDL文档可以分为两部分。顶部分由抽象定义组成,而底部分则由具体描述组成。抽象部分以独立于平台和语言的方式定义SOAP消息,它们并不包含任何随 机器或语言而变的元素。这就定义了一系列服务,截然不同的应用都可以实现。具体部分,如数据的序列化则归入底部分,因为它包含具体的定义。在上述的文档元 素中,<types>、<message>、<portType>属于抽象定义 层,<binding>、<service>属于具体定义层。所有的抽象可以是转载 2011-03-08 12:08:00 · 9050 阅读 · 3 评论 -
服务器宕机
我不得不承认,我的能力不足以写出一个100%不会宕机的游戏服务器程序,这也不能全怪我的能力太弱,谁让咱国内网游玩家数量庞大,哪个游戏刚上线时没有挤的爆满过?还有些或是猎奇,或是谋私的个人和组织,在制造着千奇百怪,匪夷所思的数据包及操作流程来试探你的服务器。这些都曾是我在服务器宕机后向老板开脱的理由。 当WOW终于来到中国时,我一边欣喜着终于可以在艾泽拉斯的大陆上自由翱翔,一边却咒骂着9C的转载 2011-11-01 17:24:59 · 1529 阅读 · 0 评论 -
基于多层结构的网络游戏平台的研究与应用
基于多层结构的网络游戏平台的研究与应用学科专业: 计算机软件与理论研究方向: 计算机软件导 师: 李 祥 教授研 究 生: 匡 华中国 · 贵州 · 贵阳 2007年 5 月本文的主要工作在《天骄II》、《傲世online》、《凤舞天骄》中得到了实际运用目 录第一章 前言 81.1 网络游戏平台的发展背景 81.2 国内外现状 91.3 本文的研转载 2011-11-01 17:04:03 · 14089 阅读 · 0 评论 -
用CHTMLView 来处理script脚本错误
页面脚本在运行时,如果出现错误,默认情况下会弹出一个对话框,告诉你脚本不正确,要不要继续运行什么的。CHTMLView中没有处理这种情况的默认方法。如果要响应这类事件,需要做2件事,1 创建一个新的类,继承自COleControl或它的派生类,并实现IOleC转载 2011-07-04 16:34:11 · 1702 阅读 · 1 评论 -
自定义浏览器控件
同自动化浏览器(http://blog.joycode.com/jiangsheng/archive/2005/10/20/65489.aspx) 相比,自动化浏览器控件(WebBrowser Control) 在应用程序中更加常用。从Outlook的预览窗格转载 2011-07-04 16:12:39 · 767 阅读 · 0 评论 -
如何自己写一个网络爬虫
<br /><br />这里是维基百科对网络爬虫的词条页面。网络爬虫以叫网络蜘蛛,网络机器人,这是一个程序,其会自动的通过网络抓取互联网上的网页,这种技术一般可能用来检查你的站点上所有的链接是否是都是有效的。当然,更为高级的技术是把网页中的相关数据保存下来,可以成为搜索引擎。<br />从技相来说,实现抓取网页可能并不是一件很困难的事情,困难的事情是对网页的分析和整理,那是一件需要有轻量智能,需要大量数学计算的程序才能做的事情。下面一个简单的流程:<br /> <br /><br />在这里,我们只是说一下转载 2011-03-24 17:54:00 · 521 阅读 · 0 评论 -
小谈网络游戏同步
<br />同步在网络游戏中是非常重要的,它保证了每个玩家在屏幕上看到的东西大体是一样的。其实呢,解决同步问题的最简单的方法就是把每个玩家的动作都向其他玩家广播一遍,这里其实就存在两个问题:1,向哪些玩家广播,广播哪些消息。2,如果网络延迟怎么办。事实上呢,第一个问题是个非常简单的问题,不过之所以我提出这个问题来,是提醒大家在设计自己的消息结构的时候,需要把这个因素考虑进去。而对于第二个问题,则是一个挺麻烦的问题,大家可以来看这么个例子:<br /> 比如有一个玩家A向服务器发了条指令,说我现在在P1转载 2011-03-24 10:33:00 · 357 阅读 · 0 评论 -
用gSOAP开发Web Service程序
<br />gSOAP是一个绑定SOAP/XML到C/C++语言的工具,使用它可以简单快速地开发出SOAP/XML的服务器端和客户端。由于gSOAP具有相当不错的兼容性,通过gSOAP,我们就可以调用由Java, .Net, Delhpi, PHP等语言开发的SOAP服务,或者向它们提供SOAP服务。<br />gSOAP是一个绑定SOAP/XML到C/C++语言的工具,使用它可以简单快速地开发出SOAP/XML的服务器端和客户端。由于 gSOAP具 有相当不错的兼容性,通过gSOAP,我们就可以调用由Ja转载 2011-03-15 17:50:00 · 1967 阅读 · 2 评论 -
WebService 之 WSDL文件 讲解
<br /><br />恩,我想说的是,是不是经常有人在开发的时候,特别是和第三方有接口的时候,走的是SOAP协议,然后用户给你一个WSDL文件,说按照上面的进行适配,嘿嘿,这个时候,要是你以前没有开发过,肯定会傻眼,那如果你想学习的话,就认真的看下面的讲解咯:<br />一、WSDL概述<br /> WebServices Description Language (WSDL Web服务语言)是一个用于精确描述Web Service的文档格式。<br /> WSDL非常适合于用转载 2011-03-16 17:18:00 · 5954 阅读 · 0 评论 -
使用 OpenSSL API 进行安全编程,第 2 部分: 安全握手
文档选项打印本页将此页作为电子邮件发送级别: 初级Kenneth Ballard (kenneth.ballard@ptk.org), 自由程序员2005 年 5 月 23 日安全套接字层(S转载 2009-05-12 11:45:00 · 533 阅读 · 0 评论 -
使用 OpenSSL API 进行安全编程,第 3 部分: 提供安全服务
OpenSSL 提供必要的能力文档选项打印本页将此页作为电子邮件发送样例代码级别: 中级Kenneth Ballard (k转载 2009-05-12 11:46:00 · 403 阅读 · 0 评论 -
使用 OpenSSL API 进行安全编程
文档选项打印本页将此页作为电子邮件发送级别: 初级Kenneth Ballard (kenneth.ballard@ptk.org), 自由程序员2004 年 8 月 09 日学习如何使用 OpenSSL转载 2009-05-12 11:42:00 · 300 阅读 · 0 评论 -
完成端口中的单句柄数据结构与单IO数据结构的理解与设计
本文作者:sodme本文出处:http://blog.csdn.net/sodme声明:本文可以不经作者同意任意转载、复制、传播,但任何对本文的引用均须保留本文的作者、出处及本行声明信息!谢谢! 完成端口模型,针对于WIN平台的其它异步网络模型而言,最大的好处,除了性能方面的卓越外,还在于完成端口在传递网络事件的通知时,可以一并传递与此事件相关的应用层数据。这个应用层数据,体现在转载 2008-07-03 11:15:00 · 337 阅读 · 0 评论 -
jrtplib介绍
一、流媒体简介随着Internet 的日益普及,在网络上传输的数据已经不再局限于文字和图形,而是逐渐向声音和视频等多媒体格式过渡。目前在网络上传输音频/视频(Audio/Video,简称A/V)等多媒体文件时,基本上只有下载和流式传输两种选择。通常说来,A/V文件占据的存储空间都比较大,在带宽受限的网络环境中下载可能要耗费数分钟甚至数小时,所以这种处理方法的延迟很大。如果换用流式传输的话,声音转载 2008-09-01 14:17:00 · 358 阅读 · 0 评论 -
获取网卡MAC地址
以前也贴过相关的文章,这次再加上,全面一些吧!做网络编程的程序员免不了要与MAC地址打交道,这个128bit的数字串在某种程度上就代表了机器的唯一性,因此在做统计工作时一般都以MAC地址作为标准。 下面介绍两种获取本机MAC地址的方式。1. 通过请求NetBios服务获取MAC地址;2. 通过IpHelpApi获取。 第一种方法要求本机开启了NetBios服务,由于有部分机器已经禁用了这项服务,因转载 2008-05-22 09:45:00 · 393 阅读 · 0 评论 -
重读TCP协议
TCP 的数据流 TCP的数据流大致可以分为两类,交互数据流与成块的数据流。交互数据流就是发送控制命令的数据流,比如relogin,telnet,ftp命令等等;成块数据流是用来发送数据的包,网络上大部分的TCP包都是这种包。 很明显,TCP在传输这两种类型的包时的效率是不一样的,因此为了提高TCP的传输效率,应该对这两种类型的包采用不同的算法。 总转载 2007-11-16 10:42:00 · 769 阅读 · 0 评论 -
在局域网中实现多播功能
最近一直在看《Unix网络编程》这本书,觉得这本书很适合初学socket编程的人(比如说我自己 ^_^ )。我一直对于多播的实现比较模糊,在看了书上的多播部分的介绍,才发现在程序中实现一个基本的多播功能是如此简单。 在这里我不想照本宣科的大说什么理论,概念的东东,我的目的是说明在我们的代码中如何实现多播功能。 开发环境: VC 6.0(sp5), 使用winsock2(ws2_32.lib)转载 2007-11-12 22:04:00 · 1448 阅读 · 0 评论 -
winsock i/o的select模型的学习
#include#include#include#pragma comment(lib,"WS2_32.lib")BOOL InsertSock(SOCKET* pSock, SOCKET sock){ for (int nIndex = 0; nIndex { i转载 2007-11-07 17:17:00 · 511 阅读 · 0 评论 -
浅析:setsockopt()改善socket网络程序的健壮性
1. 如果在已经处于 ESTABLISHED状态下的socket(一般由端口号和标志符区分)调用closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:BOOL bReuseaddr=TRUE;setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof(BOOL));转载 2007-11-08 16:29:00 · 460 阅读 · 0 评论 -
不同局域网内经Internet的P2P通信技术总结
以下将要用到一个叫做NAT的重要名词,先做点解释。NAT是Net Address Translation(网络地址转换)的简称,就是说,局域网通常靠一个具有公网IP的代理网关服务器连到Internet共享上网。局域网内的机器并不具备公网IP地址,它只有内网地址,假设它要和Internet上的HTTP服务器通信,代理网关便会新建一个端口来和这个网内机器关联,并通过这个端口来和HTTP服务器交换数据。转载 2007-01-06 16:12:00 · 619 阅读 · 0 评论 -
对使用AcceptEx建立的连接调用shutdown函数关闭返回失败
是我在去年写服务器网络库遇到的一个问题,当时令我非常意外,那时一直以为是程序代码编写的问题。后来查阅了大量英文邮件列表,才发现是IOCP本身的一个问题。为避免读者陷于同样的问题,这里把它列出来,并给出解决方法。 对每个使用AcceptEx接受的连接套结字使用setsockopt设置SO_UPDATE_ACCEPT_CONTEXT选项,这个选项原义是把listen套结字一些属转载 2009-01-09 10:19:00 · 1085 阅读 · 1 评论 -
处理IOCP连接关闭
及时监测连接被动关闭 除非有特别要求,否则你应该总是对每个连接保持一个挂起的接收pending io(使用WSARecv投递)。如果用户主动关闭连接,你的GetQueuedCompletionStatus调用将返回成功,但接收到的数据长度为0,你能根据这点检测连接是否已被对方关闭。如果连接被重置或者io被取消(如果你调用了CancelIo的话),GetQueuedComp转载 2009-01-09 10:20:00 · 2553 阅读 · 1 评论 -
大话HTTP协议
1. 霍霍哈嘿,这协议这协议!一看到协议两个字,不要回顾上世纪和上上世纪的那段历史,也不要关注劳资纠纷和经济黑幕,虽然这些和协议有关,可不是今天的话题,今天动点真格的,谈技术层面的! 话说小甲一天遇到个外星人,外星人内急,对者小甲比手划脚打听W.C.的坐标,小甲不明白,以为要被绑架,撒丫子就跑,外星人一看,得,地球人有礼貌,还给带路,就紧跟小甲,这结果是@#$^&*(,...@@! 问题在哪,转载 2008-11-28 14:52:00 · 1068 阅读 · 0 评论 -
仿腾讯 QQ 和 Skype 通过URL触发自己的程序
如果你电脑中装有qq,在ie地址栏输入:“tencent://message/?menu=yes&exe=&uin=13231462”然后[回车],立即可以与我的qq建立临时会话,如下图: skype也有类似的功能。到底是如何实现的呢?看msdn中有这么一段话: the iurlsearchhook interface is used by the browser to tran转载 2008-12-26 16:26:00 · 431 阅读 · 0 评论 -
iptables下udp穿越结尾篇----iptables与socks5
从“iptables和natcheck”一文可知,只要在两端都采用了iptables作NAT后,即使两侧都通过了natcheck的兼容性测试,但iptables两侧永远也不能互相穿越。 怎么办呢,一种办法是在公网上添加中转服务器,两侧内网机器之间的UDP通讯都由中转服务器来中转(其实只要中转一侧足矣)。这种方法的好处是,因为中转服务器在公网,任何NAT后面的机器都可以和中转服务器建立连接,也就是转载 2008-12-18 18:09:00 · 727 阅读 · 0 评论 -
iptables下udp穿越实用篇----iptables与natcheck
Stun协议(Rfc3489、详见http://www.ietf.org/rfc/rfc3489.txt) 提出了4种NAT类型的定义及其分类,并给出了如何检测在用的NAT究竟属于哪种分类的标准。但是,具体到P2P程序如何应用Stun协议及其分类法穿越NAT,则是仁者见仁、智者见智。(因为Stun协议并没有给出也没有必要给出如何穿越NAT的标准) 在拙作“iptables与stun”一文转载 2008-12-18 18:07:00 · 342 阅读 · 0 评论 -
iptables下udp穿越基础篇----iptables与stun
Stun协议(Rfc3489、详见http://www.ietf.org/rfc/rfc3489.txt)将NAT粗略分为4种类型,即Full Cone、Restricted Cone、Port Restricted Cone和Symmetric。举个实际例子(例1)来说明这四种NAT的区别: A机器在私网(192.168.0.4) NAT服务器(210.21.12.140) B机器在公网(转载 2008-12-18 18:05:00 · 309 阅读 · 0 评论 -
HTML4
Qhtml问题,高手请进,或者搞过html分析的请进 T我想写个程序,能够获取html叶面里的表单,然后再在程序里面显示出来,但现在的问题是有些表单里的数据(网页里预定义,存在array里面,有jsscript把它放到表单里面去)没法子通过分析单纯的网页得到,所以我想问问该怎么办?并且还想问一下,有什么办法能做到点击html的submit的时候,截取转载 2009-02-16 16:50:00 · 3734 阅读 · 0 评论 -
HTML编程1
QCWebBrowser2的用法T 我如何在一个函数中自己动态(因为我不需要对话框)创建CWebBrowser2控件,实现打印一个指定.htm文件的功能?Ato printm_wndWebbrowser2.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER,NULL,NULL);to转载 2009-02-16 16:45:00 · 1057 阅读 · 0 评论