天堂2使用国外开源游戏引擎L2JGameServer作为服务端游戏引擎,最近几天看了一下其源码,在此分享个人的经验。其主类为L2LoginServer:
我们就从它的构造函数开始吧:
//读取日志配置文件,配置日志
InputStream is = null;
try
{
is = new FileInputStream(new File(LOG_NAME));
LogManager.getLogManager().readConfiguration(is);
is.close();
}
catch (IOException e)
{
e.printStackTrace();
}
//读取其他游戏配置信息,如服务器灾难预防配置,数据库连接信息等,游戏技能等
Config.load();
//初始化mysql数据库连接
try
{
L2DatabaseFactory.getInstance();
}
catch (SQLException e)
{
_log.log(Level.SEVERE, "FATAL: Failed initializing database. Reason: " + e.getMessage(), e);
System.exit(1);
}
这个一看就知道,我就不用说了:
try
{
LoginController.load();
}
catch (GeneralSecurityException e)
{
_log.log(Level.SEVERE, "FATAL: Failed initializing LoginController. Reason: " + e.getMessage(), e);
System.exit(1);
}
/**生成RSA加密解密密钥在通信过程使用
:生成密钥对,发送信息之前加密,收到信息时候解密
private LoginController() throws GeneralSecurityException
{
_log.info("Loading LoginController...");
_hackProtection = new FastMap<InetAddress, FailedLoginAttempt>();
_keyPairs = new ScrambledKeyPair[10];
KeyPairGenerator keygen = null;
keygen = KeyPairGenerator.getInstance("RSA");
RSAKeyGenParameterSpec spec = new RSAKeyGenParameterSpec(1024, RSAKeyGenParameterSpec.F4);
keygen.initialize(spec);
//generate the initial set of keys
for (int i = 0; i < 10; i++)
{
_keyPairs[i] = new ScrambledKeyPair(keygen.generateKeyPair());
}
_log.info("Cached 10 KeyPairs for RSA communication");
testCipher((RSAPrivateKey) _keyPairs[0]._pair.getPrivate());
// Store keys for blowfish communication
generateBlowFishKeys();
_purge = new PurgeThread();
_purge.setDaemon(true);
_purge.start();
}
try
{
GameServerTable.load();
}
catch (GeneralSecurityException e)
{
_log.log(Level.SEVERE, "FATAL: Failed to load GameServerTable. Reason: " + e.getMessage(), e);
System.exit(1);
}
//读取服务器信息以及生成RSA密钥
public GameServerTable() throws SQLException, NoSuchAlgorithmException, InvalidAlgorithmParameterException
{
loadServerNames();
_log.info("Loaded " + _serverNames.size() + " server names");
loadRegisteredGameServers();
_log.info("Loaded " + _gameServerTable.size() + " registered Game Servers");
loadRSAKeys();
_log.info("Cached " + _keyPairs.length + " RSA keys for Game Server communication.");
}
//服务器收到信息时候使用私钥解密,发送数据时候私钥加密
//客户端使用公钥解密收到数据,使用公钥加密要发送数据
private void loadRSAKeys() throws NoSuchAlgorithmException, InvalidAlgorithmParameterException
{
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
RSAKeyGenParameterSpec spec = new RSAKeyGenParameterSpec(512, RSAKeyGenParameterSpec.F4);
keyGen.initialize(spec);
//生成10个KeyPair,发送数据时候随机选择一个私钥加密
_keyPairs = new KeyPair[KEYS_SIZE];
for (int i = 0; i < KEYS_SIZE; i++)
{
_keyPairs[i] = keyGen.genKeyPair();
}
}
//加载配置的禁止访问IP
loadBanFile();
- 大小: 67.9 KB
- 大小: 61 KB
- 大小: 40.1 KB
分享到:
相关推荐
本篇将深入探讨"天堂2服务端java源码"的相关知识点,帮助读者了解这款游戏背后的编程技术。 1. **Java语言基础** - Java是一种广泛使用的面向对象的编程语言,以其“一次编写,到处运行”的特性闻名。在服务端开发...
开发者会使用微信小程序的`<swiper>`组件来制作轮播图,同时结合`<view>`和`<navigator>`组件来布局商品卡片和导航链接。 2. 产品详情(Product Detail):此页面展示单个商品的详细信息,如图片、价格、库存、规格...
1. `ServerStart.bat`:这是一个批处理文件,用于启动游戏服务器。在Windows系统中,批处理文件是一系列命令的集合,可以通过双击执行来自动化某些任务。 2. `Server_Game.jar`:这是一个Java可执行文件(JAR包),...
"HighFive Source.rar"这个压缩包文件,据其标题,显然包含了某个项目的源码,特别的是,它关联到"天堂2H5"这一知名网络游戏的源代码实现。"天堂2H5"是一款基于HTML5技术的游戏,它将传统大型多人在线游戏(MMORPG)...
通过对“自制西游”登录器源码的分析,我们可以了解到游戏登录器的工作流程,以及易语言如何应用于实际项目中。这对于开发者来说,不仅有助于提升编程技能,也能加深对游戏开发流程的理解。同时,这个源码也是学习和...
3. **源码分析**:学习如何阅读和理解游戏源码,有助于开发者理解游戏的工作机制,甚至可能进行二次开发或优化。 4. **编程语言**:根据源码的编写语言(可能是C++、Java或Python等),可以深入学习相应语言在游戏...
开发者可能使用`<canvas>`标签来创建一个可绘制的画布,用于展示游戏画面。 2. CSS美化与布局: 两个CSS文件负责游戏的样式和布局。CSS(Cascading Style Sheets)让网页变得美观且具有交互性。在这两个文件中,...
HBuilder是一款广受欢迎的Web...通过对HBuilder登录注册界面的源码分析,开发者不仅可以学习到前端开发的基本技术,还能了解到如何构建高效、安全、友好的用户界面。这对于提升个人技能和解决实际项目问题非常有帮助。
总之,"5k6涂鸦天堂2005 -ASP源码.zip"提供了一个学习和研究ASP技术的好机会,特别是对于初学者,可以通过分析源码了解ASP的实战应用,同时提升自己的编程技能。在使用过程中,也应注意代码安全,避免潜在风险。
2. **Spring Boot配置**:学习如何在application.properties或application.yml文件中配置服务端和客户端的行为,包括服务器端口、数据库连接、日志级别等。 3. **RESTful API设计**:理解HTTP方法(GET, POST, PUT,...
通过分析这个小程序的源码,开发者不仅可以学习到微信小程序的开发技巧,还可以了解游戏设计的基本原理,对提升自身技能有很大帮助。对于喜欢编程和游戏制作的人来说,这是一个极好的学习案例。
标题"L2J-开源"指的是一个使用Java编程语言开发的开源项目,其目的是构建一个替代天堂2游戏服务器的系统。这个项目允许用户免费获取源代码,进行修改和再分发,符合开源软件的定义,这通常意味着更强大的社区支持、...
8. **数据分析**:为了跟踪用户行为和优化商城性能,源码可能集成了数据分析工具,如微信小程序自带的统计分析功能。 9. **版本控制**:开发者可能使用Git等版本控制系统管理源码,以便团队协作和代码版本管理。 ...
在互联网IT领域,微信小...总之,这套“互联网IT公司微信小程序前端源码”是一个学习和实践微信小程序开发的良好起点,开发者可以通过分析和修改源码,了解小程序的开发流程和技术栈,进一步提升自己的前端开发能力。
服务器建议配置:2H4G或更高配置(建议最低配置不低于1H2G) 建议使用Linux系统(Centos/ Debian/ Ubuntu)进行搭建 建议系统:CentOS 7.x 版本 web环境:Nginx 1.x java版本:1.8 版本 数据库版本:msyql 8.0
通过分析和理解源码,我们可以深入学习小程序的架构和逻辑。对于新年送祝福的小程序,源码通常会包含以下几个关键部分: 1. **app.json**:这是小程序的全局配置文件,用于定义小程序的页面结构、启动页、窗口样式...
1. **星座配对**:用户输入自己和心仪对象的星座信息,程序会根据星座的性格特征进行匹配分析,提供一个趣味性的配对结果。这通常涉及到星座性格特征的数据库和算法设计。 2. **星座运势**:根据用户的星座,提供...
《王者荣耀故事站小程序源码分析及开发指南》 在当今移动互联网时代,微信小程序因其轻量化、便捷性受到广大用户的喜爱。"王者荣耀故事站小程序源码/含vue后台"是这样一款基于Vue.js技术构建的微信小程序源码,旨在...
总之,“食品零食果蔬商城”微信小程序源码提供了一个很好的参考模型,开发者可以通过分析和修改这个模板,快速构建自己的电商小程序。同时,这也是一次深入学习微信小程序开发的实践机会,涵盖了前端界面设计、用户...
通过以上详细分析,我们可以看到母婴商城小程序前端源码涉及了前端开发的多个方面,包括小程序开发框架的使用、页面设计、数据管理、API调用、用户体验优化、安全性和自动化流程等,这些都是构建高效、稳定、安全的...