自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 收藏
  • 关注

原创 centos yum源 报错Could not resolve host: mirrors.aliyun.com

centos yum源 报错Could not resolve host: mirrors.aliyun.com

2023-10-12 18:24:43 188

原创 打印Lua表结构,可用于项目中

新建一个Lua文件,能让所有Lua文件访问到这里我以 MyPrint.lua 为例子local MyPrint = {}function MyPrint.TablePrint(root, flag, depthMax, excludeKey, excludeType) if type(root) ~= "table" then return print("table_print value : ",root) end local huanHang local moreSpace

2021-04-14 00:31:51 312

原创 Lua 实现游戏中的邮件系统

我在学习的过程中,简单的梳理了下邮件系统的结构,并且尝试实现了个用Lua些的简易版游戏系统概念:一般的游戏中,邮件分为两种,一种是系统邮件,一种是活动邮件,系统邮件就是运维发给玩家的邮件,如补偿,公告之类的,活动邮件就是我们内部发送的,如:活动过期玩家有的奖励没有领,这个时候通过邮件发送未领取的奖励给玩家,开发:只需要安装好 Lua 环境即可,是以类的形式进行开发,以便于更好的管理整个邮件--------- start ----------// An highlighted blockv

2020-10-17 15:35:24 5508 3

原创 添加高精度计时器测量处理能力

添加一个高精度定时器来测试处理能力使用c11提供的时间库来做处理修改一下代码,我们让客户端只发送数据,服务端只接收数据 ,看看服务端1秒能处理多少数据新建一个 CELLTimestamp.hpp 文件#ifndef _CELLTimestamp_hpp_#define _CELLTimestamp_hpp_//#include <windows.h>#include<chrono>using namespace std::chrono;class CELLTi

2020-06-20 17:20:12 220

原创 突破windows下select 64连接限制

EasyTcpServer.hpp#ifdef _WIN32 #define FD_SETSIZE 1024 // 在 WinSock2.h之前 #define WIN32_LEAN_AND_MEAN #define _WINSOCK_DEPRECATED_NO_WARNINGS #include<windows.h> #include<WinSock2.h> #pragma comment(lib,"ws2_32.lib")#else #include&lt.

2020-06-09 14:16:30 484

原创 解决客户端、服务端粘包问题

EasyTcpClient.hpp#ifndef _EasyTcpClient_hpp_#define _EasyTcpClient_hpp_#ifdef _WIN32#define WIN32_LEAN_AND_MEAN#include<windows.h>#include<WinSock2.h>#pragma comment(lib,"ws2_32.lib")#else#include<unistd.h> //uni std#include&.

2020-06-08 16:42:03 322

原创 在内网中验证,测试粘包原因

在内网终验证,测试粘包原因因为我们的数据长度很短,所以不会出现什么问题,我们把数据量加大,然后改为持续发送client和server MessageHeader.hpp 修改一下struct LoginResult : public DataHeader{ LoginResult() { dataLength = sizeof(Login); cmd = CMD_LOGIN_RESULT; result = 0; // 0表示正常 } int result; ch.

2020-05-15 14:58:22 148

原创 服务端1.5,封装server类,创建多个server服务

封装一个client 能够创建一个对象就能连接服务区新建个EasyTcpClient.hpp文件 同client一样需要把之前的代码封装成一个个的函数 1. 把定义的头文件复制过来 2. SOCKET InitSocket() 初始化socket 3. int Bind(const char* ip, unsigned short port) 绑定IP和端口 4. int ...

2020-04-21 11:30:33 199

原创 客户端升级1.4封装client类,同时与多个服务端通信

封装一个client 能够创建一个对象就能连接服务区新建个EasyTcpClient.hpp文件 需要把之前的代码封装成一个个的函数 1. 把定义的头文件复制过来 2. void InitSocket() 初始化socket 3. int Connect(const char* ip, unsigned short port) 连接服务器 4. bool OnRun() ...

2020-04-18 16:04:03 156

原创 服务端升级1.3跨平台支持Win、Linux、Mac os

先移植到mac上因为移植的时候类型的不同还有函数定义的时候、在mac下xcode上会比win下会更方便的转换到类型定义和函数定义上可以看到他们的差别把server移植到Mac OS#ifdef _WIN32 #define WIN32_LEAN_AND_MEAN #define _WINSOCK_DEPRECATED_NO_WARNINGS #inclu...

2020-04-15 11:01:16 208

原创 客户端升级1.3跨平台支持Win、Linux、Mac os、Mac版

mac os和ubuntu他们底层都是基于unix操作系统的,他们用标准c++编程几乎是相同的把client移植到Mac OS#ifdef _WIN32 #define WIN32_LEAN_AND_MEAN #define _CRT_SECURE_NO_WARNINGS #define _WINSOCK_DEPRECATED_NO_WARNINGS ...

2020-04-14 10:02:00 214

原创 客户端升级1.3跨平台支持Win、Linux、Mac os、linux版

socket在windows下和linux下的区别主要的头文件:windows linuxwinsock.h/winsock2.h unistd.h/arpa/inet.hsocket linux:RETURN VALUE On success, a file descriptor for the new socket...

2020-04-10 15:41:31 187

原创 为客户端添加输入线程std::thread

为客户端添加输入线程 Thread使用c++的标准库创建线程std::thread在c++11 的时候就已经加入到标准库中有了std::thread之后,就不用在不同的平台使用不同的API,去掉了平台差异性,使得项目开发具有更好的移植性client 修改#define WIN32_LEAN_AND_MEAN#define _WINSOCK_DEPRECATED_NO_WARNIN...

2020-04-09 16:03:17 273

原创 客户端升级为select网络模型

现在将服务端新加一个网络消息当有一个新的客户端加入的时候就通知给其他客户端server 修改enum CMD{ CMD_LOGIN, CMD_LOGIN_RESULT, CMD_LOGOUT, CMD_LOGOUT_RESULT, CMD_NEW_USER_JOIN, // 新增一个类型 CMD_ERROR};// 一个新的用户加入 就群发给别的客户端struct...

2020-04-08 17:38:29 134

原创 将服务器select模型设置为非阻塞,处理更多业务

如果除了相应客户端的消息以外,还要主动的去给客户端推送一些消息这样就有些不方便select 为阻塞状态server 设置select为阻塞状态的时候,那么绝大部分的时间都用在等待客户端连接上面如果是做一个纯应答型的网络服务程序那么这样就可以足够的使用如果除了相应客户端的消息以外,还要主动的去给客户端推送一些消息这样就有些不方便在 while 里添加了一段话看看效果select ...

2020-04-08 15:10:25 230 1

原创 将服务器升级为select模型处理多个客户端

之前写的网络模型,都是客户端和服务端1对1阻塞的网络程序每次服务端想要接收新的客户端连接的时候都必须要有一个客户端向server发送连接,才能返回执行下一步想要recv的时候也必须要客户端send真正发送之后才能执行下一步因为发送的速度比较快所以感觉不出来,像这样的程序就必须等到谁执行才能执行下一步,这样就不能执行其他业务,被动的去等待数据,返回,处理业务如果需要多个客户端连接处理业务就...

2020-04-07 23:58:42 229

原创 window下socket实现cs模式-简易版-网络信息接受长度问题

– 固长数据:我发送的多长的数据每次都是固定的,就这么多这么长变长数据:比如我要发送一个图片,每次的图片大小都不一样,但是发送的格式是相同的图片本身数据的长度都不一样,这个时候我们人为的变长数据像这样发送的时候我们就要指定我们发送的数据有多长而之前DataHeader固长数据这样的方式不明显,只有在数据结构一样但是长度不一样的时候DataHeader才会有作用代码修改:s...

2020-04-06 21:56:04 195 1

原创 window下socket实现cs模式-简易版-数据结构化一次性发送

因为有你,山河无恙,逝者安息,愿来世,平安健康上一节是网络数据报文的格式定义把网络消息分成了包头和包体两部分进行了分别的发送 ,在组成一个消息报文有两个部分,包头和包体包头:描述本次消息包的大小包体:数据现在在原有的基础上面,将包头和包体合成一个结构一次发送一次接收,这样能减少可能出错概率server#define WIN32_LEAN_AND_MEAN...

2020-04-04 02:15:50 174

原创 window下socket实现cs模式-简易版-1.2数据结构化

上一篇文章数据传输都只是传输一个字符串纯字符串网络消息优点:处理建议命令方便快捷缺点:传递大量数据是字符串解析消耗大打算改进一下,使用结构话的二进制流来传输网络数据优点:简单、方便、解析快、消耗低缺点:需要严格的网络字节序一致下面就模拟一个登陆登出client 输入 login 就把账号密码发送给serverserver#define WI...

2020-04-03 15:18:56 124

原创 window下socket实现cs模式-简易版-1.1

之前写了个1.0简易版的cs模型,client连接server后,server会给client发送一句 hello clientsend(cSock, “hello client”, sizeof(“hello client”), 0);现在修改一下,让client 输入getName,server 就给client 回一个 this server,输入 getAge 返回 80,如输入...

2020-04-02 16:55:05 145

原创 window下socket实现cs模式-简易版

编译环境操作系统win7编译器vs2015对比与linux环境下socket先比,win环境多了启动或者初始化winsock库,启动 win socket 2.x环境WORD ver = MAKEWORD(2, 2);WSADATA dat;WSAStartup(ver, &dat);清理 win socket 环境WSACleanup();指定库文件#pr...

2020-04-02 16:25:11 354

空空如也

空空如也

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

TA关注的人

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