此处整理解决一些问题的关键点。
Windows:
防火墙: Exercising the Firewall using C++ 。 VC2010编译,Win7,Win10实验成功,Exe需要管理员运行。
降低-内存(专用工作集): vc++使用EmptyWorkingSet来清理程序的内存
Ubuntu:
工具:
Qt:负责界面等
FFmpeg:负责视频编解码
mp4v2: H264转MP4
OpenAL:负责音效
SIGAR:负责收集设备信息
Boost: https://www.boost.org/ (+)
GPU: OpengGL, DirectX
Json: 协议传输(cjson,)
XML: 协议传输
protobuf: 协议传输
libevent: 网络库. (+)
MySQL: 找个免安装版
值得推荐的C/C++框架和库 : Good
多进程:
提示1: 本机多进程,走共享内存,速度更快,每秒几GB数据一点压力都没。
工具代码:
逐项检查:
稳定是王道 | 阻止系统休眠,挂起, 待机,屏保: |
X86 , X64 差异 | |
网络问题 | 1. 防火墙 2. ip地址冲突 3. mac地址冲突 4. 多网卡问题 5. UDP丢包 6. TCP 必须保持接收,一直不接收会断 |
访问权限(管理员权限) | |
内存占用 | vld |
CPU占用 | |
带宽占用 | |
GPU占用 | 花屏或黑屏幕,视频有刷新且可以抓图,检查显卡驱动 |
结构体: 字节对齐 | |
多语言版本 | |
多操作系统测试 | |
高分屏问题(高DPI) 100% 125% 150% | |
多屏问题(多个显示屏) | |
exe启动时间 | |
调试信息(dmp)文件 | dump |
Scoket 心跳机制 | |
日志功能 | |
命令和反馈,数据校验 | |
字节序问题 | 大端,小端 |
重连机制 | |
Windows常用命令行:
ping | |
ipconfig | Windows IP 配置 |
arp -a | 获取IP地址和对应的物理地址 |
netstat -ano|find "19216" | 查询进程占用的Socket |
WMIC | 强大的命令执行工具 |
Linux常用命令行:
ifconfig | |
man | 查询函数用法 (man send , man memcpy) |
ctrl-c | 常用于终止正在运行的程序 |
小公式:
环形缓冲区-公式 | int ReadSize = (W - R + Size)%Size; |
获取高,低字节
| #define LOBYTE(w) ((BYTE)(((DWORD_PTR)(w)) & 0xff)) #define HIBYTE(w) ((BYTE)((((DWORD_PTR)(w)) >> 8) & 0xff)) |
IP地址转整数 | : = 192*256*256*256 + 168*256*256 + 3*256 + 5 |
标记按位与: | UINT nFlags ; if( (nFlags&MK_LBUTTON) == MK_LBUTTON ) |