2019独角兽企业重金招聘Python工程师标准>>>

我们已经建立好一个UDP的服务程序了,下面我们要给这个服务程序添加服务内容了。

其服务内容将根据通讯的客户端请求来进行定义和处理。首先我们再回顾一下通讯内容的定义:

/// <summary>信息结构的指针型</summary>
typedef struct _message *lp_message;
/// <summary>信息结构</summary>
typedef struct _message
{union {struct { char buff[1030]; };struct { char cmd[6]; char rt_code[32]; char data[992]; };};SOCKADDR_IN addr;
};

通讯内容大致分为三部分,第一个部分为6字节的命令名称,第二部分为32字节的运行码,第三部分为数据区。那么我们的服务内容将根据前6位的命令名称来提供,这需要我们先定义一个服务内容的基本函数结构,未来的其他概念都可以沿用这一格式来进行定义。

void do<command>(lp_message msg)
{... ...
}

函数只有一个参数,就是我们上面定义的信息结构的指针。由于我们在接受信息时其客户端信息也是采用这个结构的addr来进行的,也就是说客户端的通讯信息也存储在这一结构中了,这就使得我们可以在函数内完成回送等复杂业务。

我们首先定义一个注册和登录函数,这两个函数是服务的基础,这两个命令不同于其他的命令信息,他们在运行时用户信息尚未建立,因此不存在rt_code的内容,因此我们在处理过程中也不会用到rt_code,我们会直接使用buff来进行处理。

在这里我先做个声明,讲解一下系统安全机制,系统将根据用户的“应用编码”、“设备编码”+“用户名”、“口令”的方式进行验证,系统在验证通过后,将向客户端发送一个rt_code作为今后通讯的入口,这个rt_code在每次登陆后都会重新定义,同时我们还可以设定一个rt_code的有效期,因此,在登录后我们在通讯过程中,只需要提供rt_code就可以完成认证,这将隐含掉用户的其他重要信息,简介的防止了客户信息被泄露,如果基于安全的需要我们还可以采用时间戳技术将时间戳增加到通讯内容中,同时利用这个时间戳对rt_code进行加密处理,我在这里就不在详细描述了,大家可以根据自己的需要对这一机制进行完善和补充,我们这里主要实现这一机制的最简单方式。

系统需要将用户信息,以及rt_code进行缓存,在这里我们使用一种简单的链表结构进行存储,这种结构十分简单,同时支持添加修改和删除,简单便于查找和定位。

转载于:https://my.oschina.net/u/2308182/blog/1480088

Windows平台上实现P2P服务(三)相关推荐

  1. 在Windows平台上安装Dubbox框架

    在Windows平台上安装Dubbox框架 一.分布式系统概述 分布式处理方式越来越受到业界的青睐--计算机系统正在经历一场前所未有的从集中式向分布式架构的变革.分布式系统是一个硬件或软件组件分布在不 ...

  2. 管家婆 源码 php,在windows平台上构建本身的PHP

    这是一篇翻译的文章,原文拜见:https://wiki.php.net/internals/windows/stepbystepbuild 趁便提一句,wiki.php.net有很多出色的内容,想深切 ...

  3. windows平台上实现websocket服务器

    windows平台上实现websocket服务器 目前做个项目需要做个带串口的测试软件,主要功能是一台电脑利用串口控制一台待测试设备,然后通过串口对他进行调试,同时使用串口采集其他测量设备的数值,将测 ...

  4. 正版软件 Directory Opus 12 Pro Windows 平台上的资源管理器,定是功能完全、可定制化程度高的那款。

    Directory Opus 是一款 Windows 平台上的资源管理器,定是功能最完全.可定制化程度最高的那款.你可以通过它完成几乎所有操作,包括查看图片元信息.预览图片.阅读文本文件内容.批量重命 ...

  5. python只能运行在windows平台上吗_在Windows平台上编写的Python程序无法在Unix平台运行。...

    问题:在Windows平台上编写的Python程序无法在Unix平台运行. 更多相关问题 Because plants cannot move or talk, most people believe ...

  6. python可以在多种平台运行、体现了_在Windows平台上编写的Python程序无法在Unix平台运行。...

    问题:在Windows平台上编写的Python程序无法在Unix平台运行. 更多相关问题 某船公司2003年2月,建造了两艘航行于武汉-南京的2000吨油船,双壳结构形式,至今使用良好,为公司创 肾病 ...

  7. x264代码剖析(一):图文详解x264在Windows平台上的搭建

    x264代码剖析(一):图文详解x264在Windows平台上的搭建 X264源码下载地址:http://ftp.videolan.org/pub/videolan/x264/ 平台:win7 PC. ...

  8. 细数 Windows 平台上的 NoSQL 数据库

    从可查询的分布式解决方案,如MongoDB,到简单的分布式Key/Value存储解决方案,如Cassandra.此外,还有Riak,Tokyo Cabinet,Voldemort,CouchDB和Re ...

  9. (转)在Windows平台上安装Node.js及NPM模块管理

    本文转载自:http://www.cnblogs.com/seanlv/archive/2011/11/22/2258716.html 之前9月份的时候我写了一篇关于如何在Windows平台上手工管理 ...

最新文章

  1. win10搜索计算机中所有excel,windows10系统下怎样使用excel进行高级筛选
  2. Flag counter被博客园禁了的解决方法
  3. linux客户端 存活检测,Linux下客户端检测服务器的 heartbeat
  4. Dream City(01背包+小贪心)acm寒假集训日记21/12/30
  5. RocketMQ源码解析-PushConsumer(2)
  6. ASP.NET 如何实现抓屏功能
  7. STM32固件库的下载
  8. CAD与GIS集成说明(在线CAD结合GIS,webCAD)
  9. 【牛客网C++服务器项目学习】Day12-网络编程的两种事件处理模式
  10. kodi连接远程服务器,私人影音服务器奶妈级入门篇(1)——Jellyfin for Kodi客户端设置方法...
  11. 无线摄像头一直显示请求服务器,远程摄像头为什么要连接服务器
  12. 【练习】Building a Hypermedia-Driven RESTful Web Service
  13. 一个简单的BitTorrent客户端实现(三):同步事件分离器
  14. 显著性水平 置信度 置信区间 实例讲解
  15. Android system_server无法访问sdcard目录问题记录(Android 4.4 mtk平台)
  16. pytorch(7)——二十二种transforms数据预处理方法
  17. 2020最新版MySQL数据库面试题(一)
  18. java电商平台_Java开源生鲜电商平台
  19. NGINX 的域名解析缓存
  20. 计算机桌面怎么情理,关于电脑桌面上的流氓图标要怎么清理???

热门文章

  1. 深入Java虚拟机读书笔记[10:20]
  2. ASP中的常用服务器检测源码
  3. Swift - 使用SwiftHTTP通过HTTPS进行网络请求,及证书的使用
  4. windows查看端口占用以及关闭相应的进程
  5. 插入排序,希尔排序,堆排序
  6. 各种开发API文档+开发工具
  7. Delphi中使用IXMLHTTPRequest如何用POST方式提交带参
  8. 如何用JNI技术提高Java的性能详解
  9. Visual Studio 2008 Samples Page
  10. 第四天上午 休闲假日