
网络编程
九嶷山
认真做事 用心做人
展开
-
棋牌游戏服务端架构(1)
选择服务器(select server)App通过UDP访问选择服务器,获取到网关服务器的IP和PORT。原创 2020-08-23 22:14:23 · 2167 阅读 · 0 评论 -
服务器网络开发与故障排查
一、操作系统提供的网络接口为了能更好的排查网络通信问题,我们需要熟悉操作系统提供的以下网络接口函数,列表如下: 接口函数名称 接口函数描述 接口函数签名 socket 创建套接字 int socket(int domain, int type, int p...转载 2020-03-20 13:59:14 · 887 阅读 · 0 评论 -
H5Gateway设计(二)
H5Gateway,它负责与H5客户端建立连接,接收H5客户端发送过来的消息,并对消息进行验证,转换,转发等。 1,网关的功能1.1 与H5客户端建立连接这个应该是网关最基本的网功了,一个服务做为网关,所有客户端来的消息都必须先到达这里。客户端与网关采用WebSocket连接。 1.2 消息过滤 客户端可能给服务器发送任何消息,合法的或非法的都有可能。而网关对业务...原创 2018-12-24 14:52:52 · 1545 阅读 · 0 评论 -
Gateway网关设计(一)
网关Gateway,它负责与客户端建立连接,接收客户端发送过来的消息,并对消息进行验证,转发等。 1,网关的功能1.1 与客户端建立连接这个应该是网关最基本的网功了,一个服务做为网关,所有客户端来的消息都必须先到达这里。客户端与网关采用TCP长连接。 1.2 消息过滤 客户端可能给服务器发送任何消息,合法的或非法的都有可能。而网关对业务服务进行了隔离,消息到网关这...原创 2018-12-22 23:06:24 · 7603 阅读 · 2 评论 -
VS2015下编译libevent
libevent代码地址: https://github.com/libevent/libeventParty 1 编译32位 lib打开vs2015 x86命令行直接进入代码目录,输入 nmake /f Makefile.nmake得到三个lib新建VS2015 x86工程,增加头文件和libevent_core.lib libevent_extras.l...原创 2018-11-30 11:27:09 · 1693 阅读 · 0 评论 -
bigchallenge框架
手机网络游戏生存大挑战服务端的通用框架代码,包含gateserver和gameserver大挑战是一款手机休闲网络游戏,游戏形式为开房间,每个房间内最大能容纳20名玩家游戏.服务器结构划分服务器按功能分成3类:redis服务器,负责数据的存储主逻辑服务器,战斗等游戏逻辑的处理网关服务器,负责用户的接入和账号验证先期考虑一个服务器组能容纳5W人同时在线,需部署3台服务器,基本配置如下:(我的问题是:...转载 2018-04-25 10:36:11 · 237 阅读 · 0 评论 -
HAproxy 代理技术原理
本文转载自: http://www.cnblogs.com/Bozh/p/4019607.htmlhttps://blog.youkuaiyun.com/xiefangjin/article/details/509369541.简介HAProxy是一款提供高可用性、负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理软件2. Features1.免费2.能够做到4层以上代理3.高性能4.高稳定性3....转载 2018-04-24 21:23:06 · 585 阅读 · 0 评论 -
异步网络消息处理框架
最近一段时间将原来写的kendynet网络框架重写了大部分的代码,让提供的接口更清晰,对用户更友好。整个框架的架构分层3层:1)单线程,基于原始数据流的网络接口,在这一层上,没有提供封包的处理,定时器事件等等。使用者可以在此之上按自己的需求做进一步的封装。2)单线程,提供connection,封包处理,接收发送超时处理。3)网络逻辑分离的异步网络框架,抽象出三个主要的类型:asynnet_t,so...转载 2018-04-24 21:21:25 · 803 阅读 · 0 评论 -
haproxy+keepalived
所有的系统,都是先经历一个单台机器搞所有业务的时代,一个程序+一个mysql数据库,就可以满足开发及第一个版本上线的要求。随着,数据的增加以及业务的增长,这些应用就面临一个访问量的扩大以及扩展的问题。最简单的扩展就是水平扩展,原来由一个mysql增加为2个或多个,形成一个集群,这样最简单的能力就是提供更强的服务能力。如原来的访问量支持每秒1000,现在可以支持2000(理想值),相当于将服务能力分...转载 2018-04-24 16:47:03 · 263 阅读 · 0 评论 -
bcd压缩
例如:字符0,对应这个ascii表去找它对应的10进制数为48, 对它进行bcd压缩为:0011 0000 (48的二进制数) 对它进行bcd展开为:30 (48的十六进制数) /** * 字符串--->16进制 * bcd展开 * @param value * * @return 16进制 */ p...转载 2018-04-23 16:06:16 · 622 阅读 · 0 评论 -
心跳机制tcp keepalive讨论
说明: 1. 本文的讨论和实验都以Windows为例, 其实在linux上也大同小异。 2. 在第一次写此博文时, 我对某些地方有一些误解, 现予以更正, 对文章结构做了较大调整,也欢迎大家提出质疑。 3. 在做实验玩代码的时候, 意料之中地发现腾讯QQ也在玩心跳, 不清楚具体怎么实现的, 但有点意思哈。原创 2018-01-05 15:04:13 · 1068 阅读 · 0 评论 -
epoll讲解
首先我们来定义流的概念,一个流可以是文件,socket,pipe等等可以进行I/O操作的内核对象。 不管是文件,还是套接字,还是管道,我们都可以把他们看作流。 之后我们来讨论I/O的操作,通过read,我们可以从流中读入数据;通过write,我们可以往流写入数据。现在假定一个情形,我们需要从流中读数据,但是流中还没有数据,(典型的例子为,客户端要转载 2017-11-03 16:10:55 · 256 阅读 · 0 评论 -
服务端架构中的gateway
这么一个场景:一个要承载高并发、具有高性能的后台服务,往往会有多个不同的应用服务。问题来了,你会怎样设计架构呢?如下图所示,为了共用一个稳定高效的网络处理功能,把所有服务写在一个进程里。接下来悲剧一幕幕就要上演了,如果各个模块是多人协作开发,网络库的作者得想办法设计个插件机制供各个应用挂载,开发时无论是人员或者代码都耦合非常严重,大大影响协作、开发效率,后期要增减一个应转载 2017-11-03 16:17:01 · 1996 阅读 · 0 评论 -
TCP连接拔掉网线后会发生什么
背景:前些天团队在进行终端设备和服务器端长连接业务的测试时,发现了这么一个情况:在拔掉设备端的网线后,再插上网线,有时可以继续正常的进行长接连请求,而且用的还是拔掉网线之前的那个长连接。但是有时却不能继续正常的长连接请求,需要重新建立一个新的长连接。让我尤感诧异的是第一种网线断开再插上后长连接可以恢复的情况,彻底颠覆了我一直抱有的一个所谓的“物理连接”的观念。究竟怎么回事,我们来探个究竟。转载 2017-11-03 16:38:04 · 7010 阅读 · 2 评论 -
TCP三次握手及四次挥手详细图解
相对于SOCKET开发者,TCP创建过程和链接折除过程是由TCP/IP协议栈自动创建的.因此开发者并不需要控制这个过程.但是对于理解TCP底层运作机制,相当有帮助.而且对于有网络协议工程师之类笔试,几乎是必考的内容.企业对这个问题热情之高,出乎我的意料:-)。有时上午面试前强调这个问题,并重复讲一次,下午几乎每一个人都被问到这个问题。因此在这里详细解释一下这两个过程。1、T转载 2017-10-24 11:02:35 · 312 阅读 · 0 评论