前面一篇博客介绍了mac/linux下通过C语言自定义协议实现socket通信的示例,因为大部分api与windows还有很多区别,这里就特意把windows下的tcp通信实例给介绍一下。
无论是linux,还是windows,其实c语言都是默认小端序,这个需要注意,还有一个就是结构体的内存对齐问题也是存在的,所以协议结构体我们需要注意他的大小就行了,在进行拷贝的时候,不能直接使用sizeof来计算发送数据的长度。
因为是windows,所以我们可以通过网络小助手来模拟一个服务端,而不需要通过netcat指令了,其实都一样,我的windows专业版好像不支持netcat也就是nc,当你运行nc指令,系统会默认把他干掉,很遗憾。
协议中最重要的部分,就是数据体,这个部分严格来说会不一样,这里结合了cJSON这个库来做数据json格式化。借助了rand函数来做一个随机数。所以会比上一个示例复杂一些。
这里多说一句,就是cJSON这个库是开源免费的,可以直接将头文件和cpp源文件加入项目中就可以使用了。
show me the code:
#include <winsock.h>
#include <windows.h>
#include <string.h>
#include <stdio.h>
#include <time.h>
#include "cJSON.h"