`
suiyuan0808
  • 浏览: 155202 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

天堂2游戏登陆服务器源码分析<1>

    博客分类:
  • Java
阅读更多

     天堂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
0
0
分享到:
评论
2 楼 suiyuan0808 2011-03-15  
呵呵,欢迎欢迎,多多指教
1 楼 justdo2008 2011-03-14  
朋友你也是做网页游戏的? 希望以后有机会多交流.

相关推荐

    天堂2 服务端java源码

    本篇将深入探讨"天堂2服务端java源码"的相关知识点,帮助读者了解这款游戏背后的编程技术。 1. **Java语言基础** - Java是一种广泛使用的面向对象的编程语言,以其“一次编写,到处运行”的特性闻名。在服务端开发...

    社区团购商城小程序前端源码

    开发者会使用微信小程序的`&lt;swiper&gt;`组件来制作轮播图,同时结合`&lt;view&gt;`和`&lt;navigator&gt;`组件来布局商品卡片和导航链接。 2. 产品详情(Product Detail):此页面展示单个商品的详细信息,如图片、价格、库存、规格...

    新伊薇-270_天堂270版本_

    1. `ServerStart.bat`:这是一个批处理文件,用于启动游戏服务器。在Windows系统中,批处理文件是一系列命令的集合,可以通过双击执行来自动化某些任务。 2. `Server_Game.jar`:这是一个Java可执行文件(JAR包),...

    HighFive Source.rar

    "HighFive Source.rar"这个压缩包文件,据其标题,显然包含了某个项目的源码,特别的是,它关联到"天堂2H5"这一知名网络游戏的源代码实现。"天堂2H5"是一款基于HTML5技术的游戏,它将传统大型多人在线游戏(MMORPG)...

    自制西游登录器源码

    通过对“自制西游”登录器源码的分析,我们可以了解到游戏登录器的工作流程,以及易语言如何应用于实际项目中。这对于开发者来说,不仅有助于提升编程技能,也能加深对游戏开发流程的理解。同时,这个源码也是学习和...

    880lancher_busyy75_850_880lancher_天堂登录器_天堂版本_源码.rar.rar

    3. **源码分析**:学习如何阅读和理解游戏源码,有助于开发者理解游戏的工作机制,甚至可能进行二次开发或优化。 4. **编程语言**:根据源码的编写语言(可能是C++、Java或Python等),可以深入学习相应语言在游戏...

    俄罗斯方块h5源码下载

    开发者可能使用`&lt;canvas&gt;`标签来创建一个可绘制的画布,用于展示游戏画面。 2. CSS美化与布局: 两个CSS文件负责游戏的样式和布局。CSS(Cascading Style Sheets)让网页变得美观且具有交互性。在这两个文件中,...

    hbuilder 源码 HBuilder登入注册界面.rar

    HBuilder是一款广受欢迎的Web...通过对HBuilder登录注册界面的源码分析,开发者不仅可以学习到前端开发的基本技术,还能了解到如何构建高效、安全、友好的用户界面。这对于提升个人技能和解决实际项目问题非常有帮助。

    5k6 涂鸦天堂 2005 -ASP源码.zip

    总之,"5k6涂鸦天堂2005 -ASP源码.zip"提供了一个学习和研究ASP技术的好机会,特别是对于初学者,可以通过分析源码了解ASP的实战应用,同时提升自己的编程技能。在使用过程中,也应注意代码安全,避免潜在风险。

    SpringBoot微服务搭建代码下载 源码

    2. **Spring Boot配置**:学习如何在application.properties或application.yml文件中配置服务端和客户端的行为,包括服务器端口、数据库连接、日志级别等。 3. **RESTful API设计**:理解HTTP方法(GET, POST, PUT,...

    人生重开模拟器微信小程序源码

    通过分析这个小程序的源码,开发者不仅可以学习到微信小程序的开发技巧,还可以了解游戏设计的基本原理,对提升自身技能有很大帮助。对于喜欢编程和游戏制作的人来说,这是一个极好的学习案例。

    L2J-开源

    标题"L2J-开源"指的是一个使用Java编程语言开发的开源项目,其目的是构建一个替代天堂2游戏服务器的系统。这个项目允许用户免费获取源代码,进行修改和再分发,符合开源软件的定义,这通常意味着更强大的社区支持、...

    化妆品商城小程序前端源码

    8. **数据分析**:为了跟踪用户行为和优化商城性能,源码可能集成了数据分析工具,如微信小程序自带的统计分析功能。 9. **版本控制**:开发者可能使用Git等版本控制系统管理源码,以便团队协作和代码版本管理。 ...

    互联网IT公司微信小程序前端源码

    在互联网IT领域,微信小...总之,这套“互联网IT公司微信小程序前端源码”是一个学习和实践微信小程序开发的良好起点,开发者可以通过分析和修改源码,了解小程序的开发流程和技术栈,进一步提升自己的前端开发能力。

    云商城系统,无后门,一站式系统Java源码

    服务器建议配置: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后台"是这样一款基于Vue.js技术构建的微信小程序源码,旨在...

    食品零食果蔬商城模板微信小程序源码

    总之,“食品零食果蔬商城”微信小程序源码提供了一个很好的参考模型,开发者可以通过分析和修改这个模板,快速构建自己的电商小程序。同时,这也是一次深入学习微信小程序开发的实践机会,涵盖了前端界面设计、用户...

    母婴商城小程序前端源码

    通过以上详细分析,我们可以看到母婴商城小程序前端源码涉及了前端开发的多个方面,包括小程序开发框架的使用、页面设计、数据管理、API调用、用户体验优化、安全性和自动化流程等,这些都是构建高效、稳定、安全的...

Global site tag (gtag.js) - Google Analytics