leaf开源服务器第三节-分析TCP消息通信之增加Glog日志(1)
2017-11-15 10:40
337 查看
leaf开源游戏服务器源码 leaf开源服务器第一节-分析项目结构 leaf开源服务器第二节-分析之配置文件说明及服务器运行 大家好,我是Golang语言社区的站长,今天给大家带来的是关于leaf的游戏服务器通信分析;leaf支持TCP和websocket,我们首先分析TCP的链接机制;由于原作者的log模块不好用,日志打印的时间标志和文件定位信息缺失,所以直接增加了glog第三方日志库;这个方便我们调试;这个看个人的习惯主要还 client代码; import ( "bufio" "fmt" "log" "net" "os" "strings" ) //连接服务器 func connectServer() { //接通 conn, err := net.Dial("tcp", "localhost:8888") checkError(err) fmt.Println("连接成功!\n") //输入 inputReader := bufio.NewReader(os.Stdin) fmt.Println("你是谁?") name, _ := inputReader.ReadString('\n') // trimName := strings.Trim(name, "\r\n") conn.Write([]byte(trimName + " 接入了\n ")) for { fmt.Println("我们来聊天吧!按quit退出") //读一行 input, _ := inputReader.ReadString('\n') trimInput := strings.Trim(input, "\r\n") //如果quit就退出 if trimInput == "quit" { fmt.Println("再见") conn.Write([]byte(trimName + " 退出了 ")) return } //写出来 _, err = conn.Write([]byte(trimName + " says " + trimInput)) } } //检查错误 func checkError(err error) { if err != nil { log.Fatal("an error!", err.Error()) } } //主函数 func main() { //连接servser connectServer() } 复制代码 执行 如图: 大家看开源工程的时候,特别是项目需要用到的时候,建议先网上找下;看下有没有对我们正在研究的开源项目的介绍,这样我们就可以少走些弯路,但是如果是只是想提高自己的技术水平,那就自己来一步一分析 首先,我们这节是研究通信机制,大家想想,通信模块是不是属于“底层”的,这个通讯模块一定是在作者的leaf包里吧,你可以自己去leaf的项目非包文件找,是找不到的吧‘ 所以我们看源码,找到通信模块 找到之后,运行我们的leaf的server和我们刚写的client;发现原作者的日志只是简单的打印了错误;对我们的分析并没有任何用处,所以我们需要加个日志来调试我们的消息的数据;这个原开源的项目并不能想我们调试的项目随便加日志;但是调试的时候,特别是服务器开发,流水日志是处理问题的比不可少的;建议我们拿到开源项目,必要的流程日志还是需要我们自己加上,上线的时候可以屏蔽。 增加Glog日志,再main.go增加初始化函数和第三方日志库 加好后,我们就可以再之前的TCP网络库加上 之后我们运营leaf的server和我们的client,如图: OK,今天的分析就暂时到这里;最后给大家几点忠告 1 拿到开源项目,我们的思路不要被原作者带着走;按照自己的编码习惯,按照的理解去测试。 2 平时开发中学会整理常用包,找个自己用的习惯的。例如这节我就用了GLOG库,并没有用原作者的,因为作者的日志并不是不好;而是日志打印的信息并不能很好定位我要找的数据;大家如果不信;可以试试,如果是在线上,很头疼的。 3 既然是开源项目;所以我们可以按照我们的理解和我们的测试结果去修改,修改到架构的最适合自己的;为我所用才是我们分析的目的 4 不管是leaf还是其他语言开发的游戏服务器,思想都是一样的,语言是工具谨记; 公众账号:Golang语言社区 社区微博:Golang语言社区 社区网址:www.Golang.Ltd 社区资源:www.Golang.MoM 社区直播:www.huya.com/golang 社区教育:www.NewTon.TV 我是彬哥,下节再见。 |
相关文章推荐
- 基于Tcp通信的聊天程序微风IM(c#开源) -技术分析(二) 消息转发
- 基于Tcp通信的聊天程序微风IM(c#开源) -技术分析(二) 消息转发
- leaf开源服务器第四节-分析源码实现模拟TCP客户端
- 基于TCP网络通信的自动升级程序源码分析-客户端连接服务器
- 基于TCP网络通信的自动升级程序源码分析-服务器发送文件
- 基于Tcp通信的聊天程序微风IM(c#开源) -技术分析(一) 用户管理
- 基于Tcp通信的聊天程序微风IM(c#开源) -技术分析(三) 客户端下线
- Web服务器免费开源日志分析工具和行为分析工具
- 基于TCP网络通信的自动升级程序源码分析-客户端请求服务器上的升级信息
- 基于TCP网络通信的自动升级程序源码分析-客户端连接服务器
- 基于Tcp通信的聊天程序微风IM(c#开源) -技术分析(一) 用户管理
- C#基于TCP&UDP实现服务器与多个客户端之间的通信(客户端之间直接通信,不靠服务器端转发消息)
- leaf开源服务器第一节-分析项目结构
- 基于TCP网络通信的自动升级程序源码分析-客户端请求服务器上的升级信息
- 基于TCP网络通信的自动升级程序源码分析-服务器发送文件
- leaf开源服务器第二节-分析之配置文件说明及服务器运行
- 6.5 开发笔记-异步TCP通信,响应服务器发来的消息,并处理消息
- 基于TCP网络通信的自动升级程序源码分析-客户端连接服务器
- 服务器tcp连接timewait过多优化及详细分析 推荐
- 使用TCP/IP与服务器进行通信