资源简介
支持多线程通讯;
支持报文log,多线程收发报文写log,采用互斥锁机制,防止阻塞;
基于HJ212-2017协议,接收客户端上报数据后,立即回复确认帧;
支持控制台输出报文;
可以直接运行HJ212TCPServerC\Debug\HJ212Server.exe
基于VS2010开发,可以继续开发;
支持报文log,多线程收发报文写log,采用互斥锁机制,防止阻塞;
基于HJ212-2017协议,接收客户端上报数据后,立即回复确认帧;
支持控制台输出报文;
可以直接运行HJ212TCPServerC\Debug\HJ212Server.exe
基于VS2010开发,可以继续开发;
代码片段和文件信息
// s1.cpp : 定义控制台应用程序的入口点。
//
#include “stdafx.h“
//Server.cpp
#include
#include
#include
#pragma comment(lib“ws2_32.lib“)
#define DPRINTH(X) printf(X)
int conMaxCount; // 链接个数
#define MAX_CNT_ONE_frame 10 // 每帧最多报文数
#define MAX_RECV_BUFF_LEN 8192 // 最大接收buff长度
int CheckCRC16isOK(uint8 *inbuf uint16 inbuflen);
struct ThrdParameter
{
SOCKET clientSock;
struct sockaddr_in clientAdd;
};
#pragma warning(disable:4996 4244 4005)
/****************************************************************************************
函 数: CRC16_Checkout
描 述: CRC16 循环冗余校验算法。
参 数 一: *puchMsg:需要校验的字符串指针
参 数 二: usDataLen:要校验的字符串长度
返 回 值: 返回 CRC16 校验码
****************************************************************************************/
unsigned int CRC16_Checkout(unsigned char *puchMsg unsigned int usDataLen)
{
unsigned int ijcrc_regcheck;
crc_reg = 0xFFFF;
for(i=0;i {
crc_reg = (crc_reg>>8) ^ puchMsg[i];
for(j=0;j<8;j++)
{
check = crc_reg & 0x0001;
crc_reg >>= 1;
if(check==0x0001)
{
crc_reg ^= 0xA001;
}
}
}
return crc_reg;
}
void Delay()
{
int i = 0;
for (i = 0; i < 10000;i++);
}
//获得环保需要的特定字符
//返回大于等于0,标识找到,<0没有找到; 取spe1buffer ~spe2buffer之间的字符串加字符串结束符0
int GetNeedCode(char *inbuffint inbufferlenchar *spe1bufferchar *spe2bufferchar * findbufferint maxlen)
{
int findlen = 0;
if(inbuff ==NULL ||spe1buffer ==NULL ||spe2buffer ==NULL ||findbuffer ==NULL ||inbufferlen <=0)
{
return -1;
}
char *tmpPret=inbuff;
char *Pret=strstr(tmpPret spe1buffer);
if(Pret==NULL)
{
return -1;
}
char *sPret=strstr(Pret+strlen(spe1buffer) spe2buffer);
if(sPret==NULL)
return -1;
//找到需要的字符串长度
findlen = sPret-Pret-strlen(spe1buffer);
if(findlen<0)
return -1;
if(findlen>maxlen)
{
return -1;
}
else
{
//找到需要的字符,进行拷贝
if (findlen > 0)
{
memcpy(findbuffer Pret+strlen(spe1buffer) findlen);
findbuffer[findlen] = ‘\0‘;
}
return findlen;
}
return -1;
}
/****************************************************************************************
* 函数名称: CheckCRC16isOK
* 函数功能: 检查CRC16是否正常
* 输入参数: pframeInfo 接收212协议帧信息
* 输出参数: 无
* 返 回 值: >=0 正常;< 0 错误
****************************************************************************************/
int CheckCRC16isOK(uint8 *inbuf uint16 inbuflen)
{
uint16 crc = 0;
uint16 HJ212CRC16 = 0;
uint16 dataLen = 0;
uint8 buf[10] = {0};
int i =0;
if ((inbuflen < 10)||(inbuf == NULL))
{
return 0;
}
// 提取报文数据段长度
memcpy(buf&inbu
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 41472 2020-01-22 23:05 HJ212TCPServerC\Debug\HJ212Server.exe
文件 406 2020-01-22 23:05 HJ212TCPServerC\Debug\HJ212Server.exe.manifest
文件 400052 2020-01-22 23:05 HJ212TCPServerC\Debug\HJ212Server.ilk
文件 519168 2020-01-22 23:05 HJ212TCPServerC\Debug\HJ212Server.pdb
文件 193 2020-01-22 23:11 HJ212TCPServerC\Debug\说明.txt
文件 6820 2020-01-17 23:01 HJ212TCPServerC\s1\hj212.h
文件 1153 2009-12-04 08:33 HJ212TCPServerC\s1\ReadMe.txt
文件 22578 2020-01-22 23:04 HJ212TCPServerC\s1\s1.cpp
文件 4544 2011-05-05 13:45 HJ212TCPServerC\s1\s1.vcproj
文件 1427 2011-05-05 14:30 HJ212TCPServerC\s1\s1.vcproj.DELL-F7C39659C7.dell.user
文件 6060 2020-01-22 23:00 HJ212TCPServerC\s1\s1.vcxproj
文件 1469 2020-01-11 14:31 HJ212TCPServerC\s1\s1.vcxproj.filters
文件 143 2019-12-28 14:58 HJ212TCPServerC\s1\s1.vcxproj.user
文件 207 2009-12-04 08:33 HJ212TCPServerC\s1\stdafx.cpp
文件 362 2020-01-16 13:36 HJ212TCPServerC\s1\stdafx.h
文件 498 2009-12-04 08:33 HJ212TCPServerC\s1\targetver.h
文件 8055808 2011-05-05 14:30 HJ212TCPServerC\s1.ncb
文件 873 2019-12-28 14:58 HJ212TCPServerC\s1.sln
文件 872 2009-12-04 08:33 HJ212TCPServerC\s1.sln.old
..A..H. 36352 2020-01-22 23:08 HJ212TCPServerC\s1.suo
..A..H. 21504 2011-05-05 14:30 HJ212TCPServerC\s1.suo.old
文件 1724 2019-12-28 14:58 HJ212TCPServerC\UpgradeLog.xm
文件 3348 2019-12-28 14:58 HJ212TCPServerC\_UpgradeReport_Files\UpgradeReport.css
文件 12505 2010-05-04 01:19 HJ212TCPServerC\_UpgradeReport_Files\UpgradeReport.xslt
文件 69 2019-12-28 14:58 HJ212TCPServerC\_UpgradeReport_Files\UpgradeReport_Minus.gif
文件 71 2019-12-28 14:58 HJ212TCPServerC\_UpgradeReport_Files\UpgradeReport_Plus.gif
目录 0 2020-01-22 23:09 HJ212TCPServerC\s1\Debug
目录 0 2020-01-22 23:10 HJ212TCPServerC\Debug
目录 0 2020-01-22 22:37 HJ212TCPServerC\s1
目录 0 2020-01-22 22:37 HJ212TCPServerC\_UpgradeReport_Files
............此处省略4个文件信息
- 上一篇:C++ 生成Dump文件
- 下一篇:OPC客户端的C++实现(内为中文注释)
相关资源
- 基于CS的TCP文件传输程序设计
- C语言封装的HttpClient接口
- socket客户端.c
- socket服务端.c
- TCP/IP客户端和服务器端源代码,好用
- modbus tcp/ip 简单通讯
- libnet发送udp和tcp包
- socket tcp应用
- TCP/IP与串口调试
- Tcp自定义命令调试工具
- Qt TCP聊天室demo
- C语言课设计算器
- C语言 学生兴趣管理系统
- c语言实现火车订票系统(控制台)源
- 模拟笔记本电脑(C语言实现)
- c语言实现竞技比赛打分系统
- KMP算法C语言程序
- Linux c语言 学生成绩管理系统
- 弹跳的小球(test.c)
- 林锐—高质量C编程
- 基于c语言的通讯录系统
- TCP服务端和TCP客户端通讯
- C语言全套课件与教学资料-哈工大
- 计算机二级C语言真题.docx
- C语言实现 设备信息管理系统
- GBT 28169-2011 嵌入式软件 C语言编码规范
- C语言标准库函数大全.chm
- C语言常用代码(分章节)
- c语言课程设计:客房登记系统源码
- C语言常用算法源代码
评论
共有 条评论