网络字节序

背景

如果我们采用自定义二进制传输数据,那么我们就会遇到字节序的问题,我很早学习网络编程就遇到这个问题。

windows 系统一般提供字节本地字节转换网络字节,但我们看好多开源代码根本就没有用这个几个API,难道他们就不管字节序。最近我看了c# mir 传奇代码,然后找了一下资料总算明白了。

逻辑

本质服务器和客户端用同一套字节读写就能保证数据一致,假设c# 服务器和客户端都采用BinaryWriter BinaryReader

他这个是小端的。所以我们可以采用一套二进制的读写即可。同时我们也可以自己再封装二进制读写,直接本地字节转换网络字节序就可以了。说白只要服务器和客户端达成一致即可。

visual studio 运行库 mt md

我们经常运行软件的时候提示运行库缺失,导致程序运行不了,这个时候我们就要下载对应的运行库,这个运行就是c语言的运行库,提示缺失是因为我们编译程序的选择md ,C语言的运行库用的dll。那么必须系统带有运行库,否则运行失败,这样子我们采用2种做法,一种采用mt 静态编译,那么c语言库就在程序里面,要么我们自己把运行库直接放在程序里面,这样子也能正常运行。当初用动态编译是为了减少程序大小,感觉带了运行库,跟静态编译差别不打,如果小程序还是建议静态编译。