模拟socket通信中自定义协议通信(编码/解码、成帧/界定帧)

本文介绍了如何在socket通信中使用自定义协议进行编码和解码,讲解了成帧和界定帧的方法,适用于数据包传输的场景。
摘要由CSDN通过智能技术生成

头文件

#include <iostream>
#include <stdio.h>
#include <string>
#include <Windows.h>
#include "winsock.h"
#pragma comment(lib, "wsock32")

using namespace std;
//通信消息/命令格式
struct VoteInfo
{
	UINT64 count;
	int candidate;
	bool isInquiry;
	bool isResponse;
};
int GetNextMsg(FILE *in, UINT8 *buf, size_t bufSize);
int PutMsg(UINT8 buf[], size_t msgSize, FILE *out);
size_t Encode(const VoteInfo *v, UINT8 *outBuf, const size_t bufSize);
bool Decode(UINT8 *inBuf, const size_t mSize, VoteInfo *v);


 

源文件:

#include "main.h"

static const char DELIMITER = '\n';

int GetNextMsg(FILE *in, UINT8 *buf, size_t bufSize)
{
	int count = 0;
	int nextChar;
	while (count < bufSize)
	{
		fseek(in,0,SEEK_CUR);
		nextChar = fgetc(in);

		//模拟流的取出,一旦输出就不在保留了
		//这样取完后,文件中就没有内容了
		fseek(in,-1L,SEEK_CUR);
		fputc(&#
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值