资源简介

支持多线程通讯;
支持报文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.xml

     文件       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个文件信息

评论

共有 条评论