自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

专注于网络编程,游戏后台,高并发

天天积累,天天成长,喜欢开源 https://github.com/shonm520

  • 博客(13)
  • 资源 (3)
  • 收藏
  • 关注

原创 UDP协议解惑

由于平时UDP协议接触的少,最近在梳理网络编程知识的时候,发现好多之前没有深入了解过的问题,有的甚至颠覆了以前的网络编程知识。以下是几个很重要的知识点。1 UDP的无连接学过网络编程的朋友都知道,TCP是有连接的,而UDP协议是无连接的。那么这个连接究竟指的什么?从编程的角度来说,连接指的是套接字描述符绑定了通信两端EndPoint的接口。例如TCP建立的连接一定是两个真实有效的两端,...

2018-04-27 22:37:51 559

原创 http服务器究竟做了什么(四)

这篇开始讲服务器的代码.为了让初学者更好的理解http服务器的基本原理,抓住主干,排除其他干扰,我这里用了最轻量级的http服务器tinyhttp,总共代码只有500行左右.麻雀虽小,五脏俱全. tinyhttp实现了http服务器的基本功能.首先,初学者要懂基本的socket编程,知道socket编程的基本流程.因为http服务器也是基于socket编程的.为了更直白的演示http服务器的流程,...

2018-04-24 22:25:53 637

原创 http服务器究竟做了什么(三)

本节内容将通过一些示例来说明CGI程序.前面讲过CGI程序可以用任何语言编写,考虑到便捷性,这里用python来展示CGI程序.首先搭建服务器.我这里用了最轻量级的http服务器tinyhttp,总共代码只有500行左右,后面的服务器代码分析也是基于这个.在他的htdocs里添加一个test.cgi,写CGI代码.注意,test.cgi脚本要有可执行的的权限,否则访问test.cgi时,将直接读取...

2018-04-23 11:55:55 563

原创 匿名管道为什么可以在父子进程间通信

网上关于匿名管道的用法已经非常多了,这里就不再过多的介绍,只关注本篇的主题.匿名管道创建函数pipe()系统调用底层的实现就相当于一个特殊的文件系统,每次调用的时候创建一个inode关联着两个file,一个用于读,一个用于写,从而实现数据的单向流动.一个管道实际上就是一个无形(只存在于内存中)的文件,对这个文件的操作要通过两个已经打开的文件进行,分别代表该管道的两端 .每个文件都是有一个inode...

2018-04-20 19:52:14 2499

原创 http服务器究竟做了什么(二)

上篇http服务器究竟做了什么(一)提到http服务器会有接口让第三方程序来接入,从而实现业务分离的作用.接口肯定有接口的规范,例如我国家用插座输出电压规范是220v,厂商都是根据这个规范来生产家电的.那么http服务器接口的规范是什么呢?他有有个专有名词:Common Gateway Interface(通用网关接口),简称CGI.服务器与CGI主要通过标准输入输出来通信和交互.CGI本质上是一...

2018-04-20 11:34:29 708

原创 skynet watchdog和gate

skynet lua层的基础讲解的差不多了.就剩下网络这一块了.网络这块比前面的复杂,也是skynet框架的精华所在,所以放在后面慢慢讲解.今天看了服务器与客户端交互常见的watchdog和gate模块,相当于封装了socket api的调用,程序只需要写发送和接收的逻辑即可,很是方便.下面是我花了一下午的时间,制作的UML时序图,可能不是很规范,但还算比较清晰.看到上面图,是不是感觉...

2018-04-19 21:05:21 2812 1

原创 http服务器究竟做了什么(一)

本篇文章旨在从服务器后台开发的角度剖析一个简单的http服务器的运行原理.我们知道浏览器是http(s)的客户端,目的是连接远程的http服务器,然后服务器返回浏览器数据.浏览器接收数据解析数据之后展现出来.我们看到的外在表现就是,浏览器访问一个url,然后就得到相应的web页面.同样我们知道,浏览器与http服务器是通过http协议,传输层是tcp协议,因为他是有连接,可靠的协议.关于http协...

2018-04-18 21:09:55 4285

原创 lua的元表

接触lua一年多,是要把lua的高级特性总结一下了.先说说元表吧.元表是什么?为什么要有元表?学过C++的童鞋应该知道操作符重载.例如,自定义一个复数类,可以让他的两个实例相加减等等.同理,lua的元表也可以让两个表相加减,但是他使用了更简单的语法.lua的元表是为了扩展lua的特性,使他的功能更加丰富.要想使一个表拥有加法操作的功能,必须给他添加一种元表__add,语法如下:...

2018-04-17 21:23:38 571

原创 skynet lua层消息的执行顺序

前几篇讲解了服务之间互相发送消息,消息的挂起,恢复,fork等等,感觉还是有点搞不清他们之间是怎么协作的,例如fork产生的协程什么时候被调用,如果有多个fork又怎么被调用.这篇试着讲解一下.首先要明白的是,一般所有的lua层函数都是以协程的方式被执行的,包括fork产生的函数.除非你在skynet.start()之外调用函数.这点通过前面的分析可以知道. start()函数调用timeout产...

2018-04-15 17:12:30 1745

原创 以太网数据帧结构以及大小限制

 以太网数据帧结构           以太网是目前最流行的一种局域网组网技术(其他常见局域网组网技术还有令牌环局域网、无线局域网、ATM局域网),以太网技术的正式标准是IEEE 802.3标准,它规定了在以太网中传输的数据帧结构,如下图所示。                    1、前导码/帧起始定界符:7字节0x55,一串1、0间隔,用于信号同步,1字节0xD5(10101011),表示一帧...

2018-04-09 21:47:58 9805

原创 skynet 定时器sleep与fork

在前面的几篇中定时器其实我们已经应用过了,入口函数就是靠定时器驱动的,只不过他的定时为0.参见skynet lua业务逻辑的启动--skynet.start().在后面的服务与服务交互中,为了保证在A服务call B服时,B服务已经启动,我们特意在A服务call前执行了一个无意义的循环.这节中的定时器就可以解决这个问题,调用skynet.sleep(xxx)就可以让协程挂起.我们看看slee...

2018-04-03 20:15:56 4048 1

原创 skynet call的实现--服务与服务的交互

在实现业务逻辑的过程中,各个逻辑一般会抽象成一个服务,例如游戏中的登录服务,访问数据库服务,创建房间服务等等.服务与服务之间肯定是要通信和交互的,例如登录的时候要请求数据库验证.skynet是怎么实现两个服务的通信和交互的呢?为了突出主干,我简化了lua服务代码,A服务调用B服务:A服务代码(bootstrap.lua):skynet.start(function() local ad...

2018-04-02 17:07:22 3643

原创 skynet lua业务逻辑的启动--skynet.start()

上两篇skynet主体流程, skynet怎么启动lua文件介绍了skynet代码的主体流程,还有怎么启动lua逻辑.我们知道skynet业务逻辑都是在lua里写的,这样大大提高了开发效率,而且使热更新成为可能,究竟lua层是怎么保证逻辑正常运行,一个服务在lua层的表现形式又是怎么样的呢?这篇将为您讲解.一个服务在lua层的入口是skynet.start(),他的实现为:funct...

2018-04-02 11:09:50 3824

windows 小游戏代码

包含,两个经典的游戏代码 俄罗斯方块 扫雷 很好的windows 编程学习资料

2010-08-04

Windows程序设计中文版.rar

学习windows编程经典的资料! 原 作 者:Charles Petzold 译 者:余孟学

2010-08-04

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除