資源簡介
支持多線程通訊;
支持報文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++實現(內為中文注釋)
評論
共有 條評論