使用GoLang开发游戏服务器(一)
使用GoLang开发游戏服务器(一)
实现最简单的服务器和客户端的通信
IServer
type IServer interface {Start()Stop()Serve()
}
server
type Server struct {Name stringIpVersion stringIp stringPort int
}func (s *Server) Start() {go func() {addr, err := net.ResolveTCPAddr(s.IpVersion, fmt.Sprintf("%s:%d", s.Ip, s.Port))if err != nil {fmt.Println("Resolve TCP Address Error", err)return}listener, err := net.ListenTCP(s.IpVersion, addr)if err != nil {fmt.Println("Listen Error", err)return}fmt.Println("Server Start !")for true {conn, err := listener.Accept()if err != nil {fmt.Println("Account Error", err)continue}go func() {for true {buf := make([]byte, 512)count, err := conn.Read(buf)if err != nil {fmt.Println("Read Error", err)continue}fmt.Printf("客户端发来的数据:%s\n", buf[:count])if _, err := conn.Write(buf[:count]); err != nil {fmt.Println("Write Error", err)continue}}}()}}()
}func (s *Server) Stop() {}func (s *Server) Serve() {s.Start()//TODO:做一些服务器启动之后的额外业务select {}
}func NewServer(name string) ziface.IServer {s := &Server{Name: name,IpVersion: "tcp4",Ip: "192.168.0.4",Port: 8080,}return s
}
Dome的测试
Client和Server分别是Dome的客户端和服务端
- Client
func main() {fmt.Println("Client Start...")time.Sleep(time.Second)conn, err := net.Dial("tcp", "106.13.203.64:8080")if err != nil {fmt.Println("Client Start Error", err)return}//创建子Goroutine去读取数据go func() {for true {buf := make([]byte, 512)count, err := conn.Read(buf)if err != nil {fmt.Println("Read Error...", err)return}fmt.Printf("Server Call Back: %s, count: %d\n", buf[:count], count)}}()//让主Goroutine阻塞,去写数据for true {str := ""fmt.Scanln(&str)_, err := conn.Write([]byte(str))if err != nil {fmt.Println("Write Error...", err)return}}
}
- Server
func main() {s := znet.NewServer("[zinx v0.1] Server")s.Serve()
}
使用GoLang开发游戏服务器(一)相关推荐
- golang Leaf 游戏服务器框架简介
Leaf 是一个由 Go 语言(golang)编写的开发效率和执行效率并重的开源游戏服务器框架.Leaf 适用于各类游戏服务器的开发,包括 H5(HTML5)游戏服务器. Leaf 的关注点: 良好的 ...
- golang游戏服务器项目,基于Golang的游戏服务器框架cellnet开发日记(一)
启程的故事 使用Golang写服务器是一件非常幸福的事情. 不用长时间的等待编译, 零依赖部署. 开发效率高, 多出的时间陪陪家人, 看书充充电多好. 所以Golang就像是手机界的苹果, 从发布后, ...
- nodejs开发游戏服务器遇到的性能问题
问题描述: 使用nodejs开发了一个游戏服务器,为了尽可能提高服务器的性能,服务器采用多进程的架构,前面处理玩家socket连接的是多个nodejs进程,使用 child_process 模块,服务 ...
- 游戏服务器框架php,golang -Pitaya 游戏服务器框架中文API教程
golang -Pitaya 是一种简单.快速.轻量级游戏服务器和集群支持框架和客户端库iOS.Android,团结和其他人通过C SDK.它提供了一个基本的分布式多人游戏和服务器端应用程序开发框架. ...
- 如何缓解Golang大型游戏服务器的GC压力
背景 Golang的垃圾回收器使用的是并行三色标记回收算法.该算法对比分代算法的最大问题就是,无法区分年轻代和老年代对象,如果老年代对象非常多的话,新生代对象的回收效率就会下降.如果程序没有减慢对象分 ...
- 游戏服务器引擎的设计(二)开发游戏服务器底层 及libuv使用
服务器底层,个人任务认为稳定.高效.易用最重要.如果非要排个序的话 稳定 > 易用 > 高效. 我是用的libuv这个库作为基础支持库的.为啥用它,主要是网络库不想自己写了,有现成的最好. ...
- GoWorld – 用Golang写一个分布式可扩展、可热更的游戏服务器
Golang具有运行效率高.内存安全等优良特性,因此是非常适合用来进行服务器开发.使用Golang开发游戏服务器有如下的优点: 运行效率远高于各种脚本语言,大幅度提升服务器承载能力 内存安全,不会像C ...
- 使用Golang开发手游服务器的感想
从最初决定使用Golang开发游戏服务器(参考这里),到服务器基本成型,经过了两个多礼拜的时间.这里记录一下感想和心得.具体Golang的使用经验将来有时间会再开篇文章来写. 两个礼拜的时间,完成了G ...
- arduino nano 蓝牙_探索 Golang 云原生游戏服务器开发,5 分钟上手 Nano 游戏服务器框架...
介绍 Nano 是什么? 轻量级,方便,高性能 golang 的游戏服务器框架. nano 是一个轻量级的服务器框架,它最适合的应用领域是网页游戏.社交游戏.移动游戏的服务端.当然还不仅仅是游戏,用 ...
- bigword游戏服务器文档,使用Golang实现万人同服的游戏服务器.pdf
使用Golang实现万人同服的游戏服务器 游族·袁锋峰 目 录 C O N T E N T I N D E X 00. 游戏服务器开发面临的挑战 01. 服务器开发对语言的需求 10. 使用Golan ...
最新文章
- jquery dataTable的学习
- [leetcode]Pascal#39;s Triangle II
- 一个.NET Core下的开源插件框架Pluginfactory
- 对于 AttributeError: 'Series' object has no attribute 'sort'的解决办法
- 机器学习之几个好用的数据下载网站
- asp.net oracle 分页,asp.net教程之利用ASP实现Oracle数据记录的分页显示
- github git clone ssh协议 clone超慢解决方案,提高Github Clone速度
- 公式推导 11-22
- luvcview-0.2.4移植
- MySQL(6)-----数据类型
- FPGA零基础学习:SPI 协议驱动设计
- 浅谈车载支架无线充电方案
- Java-Poi导入导出excel工具类
- love2d教程28--血条
- 计算机夏令营英语面试,保研经验 | 夏令营面试那些事儿(内含视频)
- 红楼梦人物分析系统c语言,Gephi分析红楼梦
- java玫瑰花代码_玫瑰花(示例代码)
- TeamTalk Netlib详解
- #include<set>头文件的用法
- Wacom 数位板 和冠 手绘笔 Photoshop MacOS 延时卡顿丢笔解决办法
热门文章
- 邮政挂号信和包裹查询网站(非EMS)
- python常见算法实现_几种常见算法的Python实现
- JavaScript实现简单星星闪烁特效
- iOS之安装包优化以及瘦身
- TFP-161/100/6MM/6MM/MPU在红尘里,靠近菩提
- 哈希---平方探测法
- ACL-IJCNLP 2021-Sentiment Analysis相关论文整理
- 联想y9000x做java_联想Y9000X装win7系统及BIOS设置教程(支持9代)
- 获取ie窗口的IHTMLDocument2对象
- graphpad两组t检验_Graphpad Prism如何科学地选择统计学方法