JRakNet, 网络图书馆RakNet协议的实现

分享于 

7分钟阅读

GitHub

  繁體 雙語
A protocol implementation of the network library RakNet
  • 源代码名称:JRakNet
  • 源代码网址:http://www.github.com/JRakNet/JRakNet
  • JRakNet源代码文档
  • JRakNet源代码下载
  • Git URL:
    git://www.github.com/JRakNet/JRakNet.git
    Git Clone代码到本地:
    git clone http://www.github.com/JRakNet/JRakNet
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/JRakNet/JRakNet
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    

    apmBuild Status

    JRakNet

    JRakNet是一个用于Java的网络库,它实现了基于UDP的协议 RakNet。 库应用于Minecraft服务器和客户端,但仍可以用于为它的他视频游戏创建游戏服务器和客户端。 你还可以阅读 JavaDocs

    协议信息版本
    当前协议8
    支持的服务器协议8
    支持的客户端协议8
    注释
    • 总是使用最新版本的JRakNet ( 除了快照之外),包括 Bug 修复更新,因为它们总是修复主要的Bug,添加新的特性。 作为一般规则,fork 也不是一个好主意,因为它几乎总是像以前一样更新。 这意味着它很可以能非常快,除非你打算创建一个新的特性或者修复 Bug,以便通过请求。
    • 某些数据包id由RakNet保留。 因这里,建议所有与RakNet不相关的游戏包都开始自己的特殊 with ( 在所有未用作内部数据包ID的包的开头添加字节)。 也建议游戏服务器和游戏客户端根本不使用原始包( 基于网状的函数),除非绝对必要。
    • 由于人们总是在 repo 上创建问题,如果你与服务器位于同一台机器上,Minecraft客户端就不能使用JRakNet服务器。 因此,你将不得不使用另一个设备( iPhone,安卓,XBOX One,等等 ),因为mojang部分的错误。 但是,JRakNet客户机与运行在同一台机器上的Minecraft服务器工作良好。
    如何与 Maven 一起使用

    如果你使用的是发布版本,请使用这里依赖项:

    
    
    
    
    <dependency>
    
    
     <groupId>com.whirvis</groupId>
    
    
     <artifactId>jraknet</artifactId>
    
    
     <version>2.9.6</version>
    
    
    </dependency>
    
    
    
    

    如果你希望使用快照版本,请使用这里存储库和依赖项:

    
    
    
    
    <repository>
    
    
     <id>codemc-repo</id>
    
    
     <url>https://repo.codemc.org/repository/maven-public/</url>
    
    
    </repository>
    
    
    
    
    
    
    
    
    <dependency>
    
    
     <groupId>com.whirvis</groupId>
    
    
     <artifactId>jraknet</artifactId>
    
    
     <version>2.9.7-SNAPSHOT</version>
    
    
    </dependency>
    
    
    
    
    如何创建服务器

    在JRakNet中创建服务器非常简单,创建一个服务器就可以在这里看到

    
    
    
    
    // Create server
    
    
    RakNetServer server = new RakNetServer(19132, 10,
    
    
     new MinecraftIdentifier("JRakNet Example Server", 137, "1.2", 0, 10,
    
    
     new Random().nextLong() /* Server broadcast ID */, "New World", "Survival"));
    
    
    
    // Add listener
    
    
    server.addListener(new RakNetServerListener() {
    
    
    
     // Client connected
    
    
     @Override
    
    
     public void onClientConnect(RakNetClientSession session) {
    
    
     System.out.println("Client from address " + session.getAddress() + " has connected to the server");
    
    
     }
    
    
    
     // Client disconnected
    
    
     @Override
    
    
     public void onClientDisconnect(RakNetClientSession session, String reason) {
    
    
     System.out.println("Client from address " + session.getAddress()
    
    
     + " has disconnected from the server for the reason "" + reason + """);
    
    
     }
    
    
    
     // Packet received
    
    
     @Override
    
    
     public void handleMessage(RakNetClientSession session, RakNetPacket packet, int channel) {
    
    
     System.out.println("Client from address " + session.getAddress() + " sent packet with ID "
    
    
     + RakNetUtils.toHexStringId(packet) + " on channel " + channel);
    
    
     }
    
    
    
    });
    
    
    
    // Start server
    
    
    server.start();
    
    
    
    

    这是一个简单的RakNet服务器,可以通过Minecraft通过服务器显示的"好友"选项卡进行测试。 一旦服务器弹出,你应该能够点击它触发连接和包挂钩。

    如何创建客户端

    在JRakNet中创建客户端也很容易。 创建客户端所需的代码可以在这里看到

    
    
    
    
    // Server address and port
    
    
    String SERVER_ADDRESS = "sg.lbsg.net";
    
    
    int SERVER_PORT = 19132;
    
    
    
    // Create client
    
    
    RakNetClient client = new RakNetClient();
    
    
    
    // Add listener
    
    
    client.addListener(new RakNetClientListener() {
    
    
    
     // Server connected
    
    
     @Override
    
    
     public void onConnect(RakNetServerSession session) {
    
    
     System.out.println("Successfully connected to server with address " + session.getAddress());
    
    
     client.disconnect();
    
    
     }
    
    
    
     // Server disconnected
    
    
     @Override
    
    
     public void onDisconnect(RakNetServerSession session, String reason) {
    
    
     System.out.println("Successfully disconnected from server with address " + session.getAddress()
    
    
     + " for the reason "" + reason + """);
    
    
     client.shutdown();
    
    
     }
    
    
    
    });
    
    
    
    // Connect to server
    
    
    client.connect(SERVER_ADDRESS, SERVER_PORT);
    
    
    
    

    这是一个简单的RakNet客户机,尝试连接到主 LBSG服务器。 连接后,关闭连接并关闭。



    相关文章