系统相关
首页 > 系统相关> > [linux环境] 基于thrift模拟游戏的简易匹配机制(三.完结)

[linux环境] 基于thrift模拟游戏的简易匹配机制(三.完结)

作者:互联网

目录

save服务的客户端和服务端

呜呜呜,报错了

测试一波

 本次commit记录

match server:3.0(考虑到段位)

消费者队列稍作改动

设计一下匹配机制 

本次conmmit记录

match server:4.0(多线程)

本次commmit记录

match server:5.0(兼顾段位和匹配时长)

新增秒数队列wt

判断段位匹配范围

匹配(删的时候注意先删后面的,再删前面的,因为先删前面的下标会变)

本次commmit记录



save服务的客户端和服务端

在thrift的文件夹下创建save.thrift

这里的password为服务器(基于ac terminal)的密码经md5加密后的前八位  7e379f37

AC Terminal (acwing.com)https://www.acwing.com/file_system/file/content/whole/index/content/2543025/

namespace cpp save_service

service Save {

    /**
     * username: myserver的名称
     * password: myserver的密码的md5sum的前8位
     * 用户名密码验证成功会返回0,验证失败会返回1
     * 验证成功后,结果会被保存到myserver:homework/lesson_6/result.txt中
     */
    i32 save_data(1: string username, 2: string password, 3: i32 player1_id, 4: i32 player2_id)
}

生成对应的cpp文件并更改gen-cpp 名为save_client

~/thrift_lesson/match_system/src$

thrift -r --gen cpp ../../thrift/save.thrift 
mv gen-cpp/ save_client

 需要删除save_client下的Save_server.skeleton.cpp, 在客户端并不需要该服务且 cpp编译时是不能同时存在两个main函数

Apache Thrift - C++https://thrift.apache.org/tutorial/cpp.html#client

在main.cpp中,按照官方文档的client样例,把缺少的头文件,save_client/save.h加上,以及引入命名空间save_service

记得把client.py的"localhost"改为 客户端本地IP (即127.0.0.1)

把main.cpp的"localhost"改为 服务器地址

因为game的服务是起在本地的, 而save的服务是起在服务器的

编译链接(先编译save_client下的cpp文件)

g++ -c save_client/*cpp
g++ *.o -o main -lthrift -pthread

呜呜呜,报错了

 经群内大佬指点,应该是有main的进程占用了端口,我一看,

 果然是昨天的tmux的窗口还连着,kill进程后重新运行./main报错消失了!!!

上面的编译环节千万别忘了编译main.cpp, 否则就会像我一样在服务器中找不到数据的存储而以为出了bug(其实没有....

测试一波

(左下为服务器模拟游戏数据存储的服务端,,左上模拟的是游戏数据的客户端和匹配系统的服务端,右上模拟的是游戏的客户端,三者均可为不同的服务器)

 本次commit记录

 implement save-client (0e5d2c9e) · Commits · Knight bit / thrift_lesson · GitLabhttps://git.acwing.com/knight/thrift_lesson/-/commit/0e5d2c9e198a789fa4dcc8ce7a223b00bb290f97


match server:3.0(考虑到段位)

简单的流程算是写完了

新增/删除玩家 

标签:匹配,server,模拟游戏,段位,linux,cpp,save,thrift
来源: https://blog.csdn.net/qq_39391544/article/details/120634143