网络游戏封包基础
日期:2008年5月6日 作者: 查看:[大字体 中字体 小字体]-
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = htonl( INADDR_ANY );
addr.sin_port = htons( Port ); // Port为要监听的端口号
// 绑定socket
if( bind( sSocket, (SOCKADDR*)&addr, sizeof(addr) ) == SOCKET_ERROR )
{
Failed( "WinSocket Bind Error!");
}
// 进行监听
if( listen( sSocket, SOMAXCONN ) == SOCKET_ERROR )
{
Failed( "WinSocket Listen Error!");
}
这里使用的是阻塞式通讯处理,此时程序将处于等待玩家用户连接的状态,倘若这时候有客户端连接进来,则通过accept()来创建针对此玩家用户的Socket连接,代码片段如下:
sockaddraddrServer;
int nLen sizeof( addrServer );
SOCKET sPlayerSocket accept( sSocket, &addrServer, &nLen );
if( sPlayerSocket == INVALID_SOCKET )
{
Failed( WinSocket Accept Error!");
}
这里我们创建了sPlayerSocket连接,此后游戏服务器与这个玩家用户的通讯全部通过此Socket进行,到这里为止,我们服务器已经有了接受玩家用户连接的功能,现在让我们来看看游戏客户端是如何连接到游戏服务器上,代码片段如下:
SOCKADDR_IN addr;
memset( &addr, 0, sizeof(addr) );
addr.sin_family = AF_INET;// 要连接的游戏服务器端口号
addr.sin_addr.s_addr = inet_addr( IP );// 要连接的游戏服务器IP地址,
addr.sin_port = htons( Port );//到此,客户端和服务器已经有了通讯的桥梁,
//接下来就是进行数据的发送和接收:
connect( sSocket, (SOCKADDR*)&addr, sizeof(addr) );
if( send( sSocket, pBuffer, lLength, 0 ) == SOCKET_ERROR )
{
Failed( "WinSocket Send Error!");
}
这里的pBuffer为要发送的数据缓冲指针,lLength为需要发送的数据长度,通过这支Socket API函数,我们无论在客户端或者服务端都可以进行数据的发送工作,同时,我们可以通过recv()这支Socket API函数来进行数据接收: if( recv( sSocket, pBuffer, lLength, 0 ) == SOCKET_ERROR )
{
Failed( "WinSocket Recv Error!");
}
其中pBuffer用来存储获取的网络数据缓冲,lLength则为需要获取的数据长度。
现在,我们已经了解了一些网络互连的基本知识,但作为网络游戏,如此简单的连接方式是无法满足网络游戏中百人千人同时在线的,我们需要更合理容错性更强的网络通讯处理方式,当然,我们需要先了解一下网络游戏对网络通讯的需求是怎样的。
大家知道,游戏需要不断循环处理游戏中的逻辑并进行游戏世界的绘制,上面所介绍的Winsock处理方式均是以阻塞方式进行,这样就违背了游戏的执行本质,可以想象,在客户端连接到服务器的过程中,你的游戏不能得到控制,这时如果玩家想取消连接或者做其他处理,甚至显示一个最基本的动态连接提示都不行。
所以我们需要用其他方式来处理网络通讯,使其不会与游戏主线相冲突,可能大家都会想到: 创建一个网络线程来处理不就可以了?没错,我们可以创建一个专门用于网络通讯的子线程来解决这个问题。当然,我们游戏中多了一个线程,我们就需要做更多的考虑,让我们来看看如何创建网络通讯线程。 - 上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] 下一页
-
- 网络游戏封包基础 相关文章:
- ·多个技巧让局域网内互访无障碍
- ·学习CSS制作网页的多个经验技巧
- ·预防网络病毒的几个忠告
- ·个性圣诞节贺卡制作网站推荐
- ·解读防火墙日志记录 防范网络攻击
- ·把网页保存为图片 换种方式收集有用资料
- ·详解Alexa网站流量排名
- ·学习CSS制作网页总结的一些经验技巧
- ·纯CSS制作的新闻网站中的文章列表
- ·用十大安全策略加固无线局域网安全
- 网络游戏封包基础 相关软件
- ·公司企业网站管理系统模板功能强大版
- ·服装专卖店网站模板免费版
- ·围棋网络版
- ·《宝贝坦克》休闲网游
- ·奇酷游戏 时尚网络休闲平台
- ·网络游戏《R-MAN》宣传片
- ·《大力网球2005》运动试玩
- ·《网络三缺一》客户端
- ·GBA游戏《马里奥网球》模拟器
- ·网络名家合集之《赤军作品集》
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
上一篇:PGP 加密技术
下一篇:PGP的密匙和口令的安全性问题
精品推荐
热点TOP10
- ·简单算法——鼠到擒来 V3.1
- ·对称加密算法技术概述
- ·管得多 2003 V3.60 算法分析
- ·梦幻邮件制作v1.2 算法分析
- ·豪杰超级解霸3000[英雄版]算法分析
- ·Folder Browser Control v1.0.10注册码的计算
- ·网络游戏封包基础
- ·SAM的散列存储加密解密算法
- ·深思3的狗加密的软件
- ·豪杰超级解霸DVD III 共享版 算法分析
- ·某交通客运信息管理系统
- ·万能五笔2001注册码分析及暴力破解 ---可怜的思考者 (27千字)
- ·算法分析 好冷清啊,来一篇破文吧
- ·破解对象:Visual CHM 3.20b
- ·飘雪动画秀3.02注册算法分析
- ·中文拨号上网计时计费器 V4.12注册算法分析--[OCG]
- ·OfficeCenter4.2增强版注册程序
- ·豪杰超级解霸3000[英雄版] (15千字) 算法分析
- ·算法分析 创想游戏控制软件 V1.03
- ·Registry Crawler 4.0注册码算法分析 - OCG
特别推荐
- ·网络游戏封包基础
- ·攻破Windows系统加密保护之EFS解密
- ·巧用系统自带功能给文件夹加密
- ·加密文件看见“照妖镜”还不显原型
- ·破解入门教学(二)
- ·破解光盘加密:把DVD大片拷到硬盘上看
- ·远程主机探测技术FAQ集 - 扫描篇
- ·轻松破解:打开丢失密码的笔记本
- ·轻松破解丢失密码的笔记本电脑
- ·软件狗[Dongles]的加密与解密技术
- ·CMOS破解完全手册
- ·五种windows密码设置及破解
- ·共享软件杀手:黑客常用十大破解工具
- ·如何学好破解这门技术
- ·借助工具 为BitComet轻松去广告
- ·七种加密解密
- ·破解windowsXP,window2000的开机密码
- ·破解程序及注册机使用方法
- ·解密宝典——十招教你学会软件破解
- ·十招教你学会破解
