Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
A
ademco_hb
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
captainwong
ademco_hb
Commits
62357e69
Commit
62357e69
authored
Apr 15, 2020
by
captainwong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update direct-machine; linux build support for bench, demo and server_demo
parent
1f847118
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
104 additions
and
26 deletions
+104
-26
.gitignore
.gitignore
+1
-0
README.md
README.md
+5
-0
ademco_hb.sln
ademco_hb.sln
+32
-0
bench.cpp
bench/bench.cpp
+2
-3
build.sh
build.sh
+9
-0
server_demo.cpp
server_demo/server_demo.cpp
+55
-23
No files found.
.gitignore
View file @
62357e69
...
@@ -33,6 +33,7 @@ Debug/config/
...
@@ -33,6 +33,7 @@ Debug/config/
Debug/
Debug/
Release/
Release/
ReleaseD/
ReleaseD/
build/
# vc6
# vc6
...
...
README.md
View file @
62357e69
...
@@ -4,6 +4,11 @@
...
@@ -4,6 +4,11 @@
欢迎提 issue 及 pr 。
欢迎提 issue 及 pr 。
## 编译示例
*
`Windows`
下使用
`VS 2019 Community`
打开
`ademco_hb.sln`
进行编译。
*
`Linux`
下执行
`build.sh`
编译
`demo`
,
`bench`
,
`server_demo`
三个示例程序,结果放在
`build`
文件夹内。
## docs
## docs
文档
文档
...
...
ademco_hb.sln
View file @
62357e69
...
@@ -21,71 +21,103 @@ EndProject
...
@@ -21,71 +21,103 @@ EndProject
Global
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|Any CPU = Debug|Any CPU
Debug|ARM = Debug|ARM
Debug|ARM64 = Debug|ARM64
Debug|x64 = Debug|x64
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
Release|Any CPU = Release|Any CPU
Release|ARM = Release|ARM
Release|ARM64 = Release|ARM64
Release|x64 = Release|x64
Release|x64 = Release|x64
Release|x86 = Release|x86
Release|x86 = Release|x86
EndGlobalSection
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{36640D95-55AB-4DCF-9062-91A53203E6A9}.Debug|Any CPU.ActiveCfg = Debug|Win32
{36640D95-55AB-4DCF-9062-91A53203E6A9}.Debug|Any CPU.ActiveCfg = Debug|Win32
{36640D95-55AB-4DCF-9062-91A53203E6A9}.Debug|ARM.ActiveCfg = Debug|Win32
{36640D95-55AB-4DCF-9062-91A53203E6A9}.Debug|ARM64.ActiveCfg = Debug|Win32
{36640D95-55AB-4DCF-9062-91A53203E6A9}.Debug|x64.ActiveCfg = Debug|x64
{36640D95-55AB-4DCF-9062-91A53203E6A9}.Debug|x64.ActiveCfg = Debug|x64
{36640D95-55AB-4DCF-9062-91A53203E6A9}.Debug|x64.Build.0 = Debug|x64
{36640D95-55AB-4DCF-9062-91A53203E6A9}.Debug|x64.Build.0 = Debug|x64
{36640D95-55AB-4DCF-9062-91A53203E6A9}.Debug|x86.ActiveCfg = Debug|Win32
{36640D95-55AB-4DCF-9062-91A53203E6A9}.Debug|x86.ActiveCfg = Debug|Win32
{36640D95-55AB-4DCF-9062-91A53203E6A9}.Debug|x86.Build.0 = Debug|Win32
{36640D95-55AB-4DCF-9062-91A53203E6A9}.Debug|x86.Build.0 = Debug|Win32
{36640D95-55AB-4DCF-9062-91A53203E6A9}.Release|Any CPU.ActiveCfg = Release|Win32
{36640D95-55AB-4DCF-9062-91A53203E6A9}.Release|Any CPU.ActiveCfg = Release|Win32
{36640D95-55AB-4DCF-9062-91A53203E6A9}.Release|ARM.ActiveCfg = Release|Win32
{36640D95-55AB-4DCF-9062-91A53203E6A9}.Release|ARM64.ActiveCfg = Release|Win32
{36640D95-55AB-4DCF-9062-91A53203E6A9}.Release|x64.ActiveCfg = Release|x64
{36640D95-55AB-4DCF-9062-91A53203E6A9}.Release|x64.ActiveCfg = Release|x64
{36640D95-55AB-4DCF-9062-91A53203E6A9}.Release|x64.Build.0 = Release|x64
{36640D95-55AB-4DCF-9062-91A53203E6A9}.Release|x64.Build.0 = Release|x64
{36640D95-55AB-4DCF-9062-91A53203E6A9}.Release|x86.ActiveCfg = Release|Win32
{36640D95-55AB-4DCF-9062-91A53203E6A9}.Release|x86.ActiveCfg = Release|Win32
{36640D95-55AB-4DCF-9062-91A53203E6A9}.Release|x86.Build.0 = Release|Win32
{36640D95-55AB-4DCF-9062-91A53203E6A9}.Release|x86.Build.0 = Release|Win32
{EA5A04AA-EE49-4059-81A0-765402A210E7}.Debug|Any CPU.ActiveCfg = Debug|Win32
{EA5A04AA-EE49-4059-81A0-765402A210E7}.Debug|Any CPU.ActiveCfg = Debug|Win32
{EA5A04AA-EE49-4059-81A0-765402A210E7}.Debug|ARM.ActiveCfg = Debug|Win32
{EA5A04AA-EE49-4059-81A0-765402A210E7}.Debug|ARM64.ActiveCfg = Debug|Win32
{EA5A04AA-EE49-4059-81A0-765402A210E7}.Debug|x64.ActiveCfg = Debug|x64
{EA5A04AA-EE49-4059-81A0-765402A210E7}.Debug|x64.ActiveCfg = Debug|x64
{EA5A04AA-EE49-4059-81A0-765402A210E7}.Debug|x64.Build.0 = Debug|x64
{EA5A04AA-EE49-4059-81A0-765402A210E7}.Debug|x64.Build.0 = Debug|x64
{EA5A04AA-EE49-4059-81A0-765402A210E7}.Debug|x86.ActiveCfg = Debug|Win32
{EA5A04AA-EE49-4059-81A0-765402A210E7}.Debug|x86.ActiveCfg = Debug|Win32
{EA5A04AA-EE49-4059-81A0-765402A210E7}.Debug|x86.Build.0 = Debug|Win32
{EA5A04AA-EE49-4059-81A0-765402A210E7}.Debug|x86.Build.0 = Debug|Win32
{EA5A04AA-EE49-4059-81A0-765402A210E7}.Release|Any CPU.ActiveCfg = Release|Win32
{EA5A04AA-EE49-4059-81A0-765402A210E7}.Release|Any CPU.ActiveCfg = Release|Win32
{EA5A04AA-EE49-4059-81A0-765402A210E7}.Release|ARM.ActiveCfg = Release|Win32
{EA5A04AA-EE49-4059-81A0-765402A210E7}.Release|ARM64.ActiveCfg = Release|Win32
{EA5A04AA-EE49-4059-81A0-765402A210E7}.Release|x64.ActiveCfg = Release|x64
{EA5A04AA-EE49-4059-81A0-765402A210E7}.Release|x64.ActiveCfg = Release|x64
{EA5A04AA-EE49-4059-81A0-765402A210E7}.Release|x64.Build.0 = Release|x64
{EA5A04AA-EE49-4059-81A0-765402A210E7}.Release|x64.Build.0 = Release|x64
{EA5A04AA-EE49-4059-81A0-765402A210E7}.Release|x86.ActiveCfg = Release|Win32
{EA5A04AA-EE49-4059-81A0-765402A210E7}.Release|x86.ActiveCfg = Release|Win32
{EA5A04AA-EE49-4059-81A0-765402A210E7}.Release|x86.Build.0 = Release|Win32
{EA5A04AA-EE49-4059-81A0-765402A210E7}.Release|x86.Build.0 = Release|Win32
{EF267749-DA49-433D-BF4E-742D4BC7F1DA}.Debug|Any CPU.ActiveCfg = Debug|Win32
{EF267749-DA49-433D-BF4E-742D4BC7F1DA}.Debug|Any CPU.ActiveCfg = Debug|Win32
{EF267749-DA49-433D-BF4E-742D4BC7F1DA}.Debug|ARM.ActiveCfg = Debug|Win32
{EF267749-DA49-433D-BF4E-742D4BC7F1DA}.Debug|ARM64.ActiveCfg = Debug|Win32
{EF267749-DA49-433D-BF4E-742D4BC7F1DA}.Debug|x64.ActiveCfg = Debug|x64
{EF267749-DA49-433D-BF4E-742D4BC7F1DA}.Debug|x64.ActiveCfg = Debug|x64
{EF267749-DA49-433D-BF4E-742D4BC7F1DA}.Debug|x64.Build.0 = Debug|x64
{EF267749-DA49-433D-BF4E-742D4BC7F1DA}.Debug|x64.Build.0 = Debug|x64
{EF267749-DA49-433D-BF4E-742D4BC7F1DA}.Debug|x86.ActiveCfg = Debug|Win32
{EF267749-DA49-433D-BF4E-742D4BC7F1DA}.Debug|x86.ActiveCfg = Debug|Win32
{EF267749-DA49-433D-BF4E-742D4BC7F1DA}.Debug|x86.Build.0 = Debug|Win32
{EF267749-DA49-433D-BF4E-742D4BC7F1DA}.Debug|x86.Build.0 = Debug|Win32
{EF267749-DA49-433D-BF4E-742D4BC7F1DA}.Release|Any CPU.ActiveCfg = Release|Win32
{EF267749-DA49-433D-BF4E-742D4BC7F1DA}.Release|Any CPU.ActiveCfg = Release|Win32
{EF267749-DA49-433D-BF4E-742D4BC7F1DA}.Release|ARM.ActiveCfg = Release|Win32
{EF267749-DA49-433D-BF4E-742D4BC7F1DA}.Release|ARM64.ActiveCfg = Release|Win32
{EF267749-DA49-433D-BF4E-742D4BC7F1DA}.Release|x64.ActiveCfg = Release|x64
{EF267749-DA49-433D-BF4E-742D4BC7F1DA}.Release|x64.ActiveCfg = Release|x64
{EF267749-DA49-433D-BF4E-742D4BC7F1DA}.Release|x64.Build.0 = Release|x64
{EF267749-DA49-433D-BF4E-742D4BC7F1DA}.Release|x64.Build.0 = Release|x64
{EF267749-DA49-433D-BF4E-742D4BC7F1DA}.Release|x86.ActiveCfg = Release|Win32
{EF267749-DA49-433D-BF4E-742D4BC7F1DA}.Release|x86.ActiveCfg = Release|Win32
{EF267749-DA49-433D-BF4E-742D4BC7F1DA}.Release|x86.Build.0 = Release|Win32
{EF267749-DA49-433D-BF4E-742D4BC7F1DA}.Release|x86.Build.0 = Release|Win32
{76899E2F-3026-4262-8D0A-EE7CED1020CF}.Debug|Any CPU.ActiveCfg = Debug|Win32
{76899E2F-3026-4262-8D0A-EE7CED1020CF}.Debug|Any CPU.ActiveCfg = Debug|Win32
{76899E2F-3026-4262-8D0A-EE7CED1020CF}.Debug|ARM.ActiveCfg = Debug|Win32
{76899E2F-3026-4262-8D0A-EE7CED1020CF}.Debug|ARM64.ActiveCfg = Debug|Win32
{76899E2F-3026-4262-8D0A-EE7CED1020CF}.Debug|x64.ActiveCfg = Debug|x64
{76899E2F-3026-4262-8D0A-EE7CED1020CF}.Debug|x64.ActiveCfg = Debug|x64
{76899E2F-3026-4262-8D0A-EE7CED1020CF}.Debug|x64.Build.0 = Debug|x64
{76899E2F-3026-4262-8D0A-EE7CED1020CF}.Debug|x64.Build.0 = Debug|x64
{76899E2F-3026-4262-8D0A-EE7CED1020CF}.Debug|x86.ActiveCfg = Debug|Win32
{76899E2F-3026-4262-8D0A-EE7CED1020CF}.Debug|x86.ActiveCfg = Debug|Win32
{76899E2F-3026-4262-8D0A-EE7CED1020CF}.Debug|x86.Build.0 = Debug|Win32
{76899E2F-3026-4262-8D0A-EE7CED1020CF}.Debug|x86.Build.0 = Debug|Win32
{76899E2F-3026-4262-8D0A-EE7CED1020CF}.Release|Any CPU.ActiveCfg = Release|Win32
{76899E2F-3026-4262-8D0A-EE7CED1020CF}.Release|Any CPU.ActiveCfg = Release|Win32
{76899E2F-3026-4262-8D0A-EE7CED1020CF}.Release|ARM.ActiveCfg = Release|Win32
{76899E2F-3026-4262-8D0A-EE7CED1020CF}.Release|ARM64.ActiveCfg = Release|Win32
{76899E2F-3026-4262-8D0A-EE7CED1020CF}.Release|x64.ActiveCfg = Release|x64
{76899E2F-3026-4262-8D0A-EE7CED1020CF}.Release|x64.ActiveCfg = Release|x64
{76899E2F-3026-4262-8D0A-EE7CED1020CF}.Release|x64.Build.0 = Release|x64
{76899E2F-3026-4262-8D0A-EE7CED1020CF}.Release|x64.Build.0 = Release|x64
{76899E2F-3026-4262-8D0A-EE7CED1020CF}.Release|x86.ActiveCfg = Release|Win32
{76899E2F-3026-4262-8D0A-EE7CED1020CF}.Release|x86.ActiveCfg = Release|Win32
{76899E2F-3026-4262-8D0A-EE7CED1020CF}.Release|x86.Build.0 = Release|Win32
{76899E2F-3026-4262-8D0A-EE7CED1020CF}.Release|x86.Build.0 = Release|Win32
{3381C5DE-57BF-425F-A3A6-B85DECF776D6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3381C5DE-57BF-425F-A3A6-B85DECF776D6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3381C5DE-57BF-425F-A3A6-B85DECF776D6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3381C5DE-57BF-425F-A3A6-B85DECF776D6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3381C5DE-57BF-425F-A3A6-B85DECF776D6}.Debug|ARM.ActiveCfg = Debug|Any CPU
{3381C5DE-57BF-425F-A3A6-B85DECF776D6}.Debug|ARM.Build.0 = Debug|Any CPU
{3381C5DE-57BF-425F-A3A6-B85DECF776D6}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{3381C5DE-57BF-425F-A3A6-B85DECF776D6}.Debug|ARM64.Build.0 = Debug|Any CPU
{3381C5DE-57BF-425F-A3A6-B85DECF776D6}.Debug|x64.ActiveCfg = Debug|Any CPU
{3381C5DE-57BF-425F-A3A6-B85DECF776D6}.Debug|x64.ActiveCfg = Debug|Any CPU
{3381C5DE-57BF-425F-A3A6-B85DECF776D6}.Debug|x64.Build.0 = Debug|Any CPU
{3381C5DE-57BF-425F-A3A6-B85DECF776D6}.Debug|x64.Build.0 = Debug|Any CPU
{3381C5DE-57BF-425F-A3A6-B85DECF776D6}.Debug|x86.ActiveCfg = Debug|Any CPU
{3381C5DE-57BF-425F-A3A6-B85DECF776D6}.Debug|x86.ActiveCfg = Debug|Any CPU
{3381C5DE-57BF-425F-A3A6-B85DECF776D6}.Debug|x86.Build.0 = Debug|Any CPU
{3381C5DE-57BF-425F-A3A6-B85DECF776D6}.Debug|x86.Build.0 = Debug|Any CPU
{3381C5DE-57BF-425F-A3A6-B85DECF776D6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3381C5DE-57BF-425F-A3A6-B85DECF776D6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3381C5DE-57BF-425F-A3A6-B85DECF776D6}.Release|Any CPU.Build.0 = Release|Any CPU
{3381C5DE-57BF-425F-A3A6-B85DECF776D6}.Release|Any CPU.Build.0 = Release|Any CPU
{3381C5DE-57BF-425F-A3A6-B85DECF776D6}.Release|ARM.ActiveCfg = Release|Any CPU
{3381C5DE-57BF-425F-A3A6-B85DECF776D6}.Release|ARM.Build.0 = Release|Any CPU
{3381C5DE-57BF-425F-A3A6-B85DECF776D6}.Release|ARM64.ActiveCfg = Release|Any CPU
{3381C5DE-57BF-425F-A3A6-B85DECF776D6}.Release|ARM64.Build.0 = Release|Any CPU
{3381C5DE-57BF-425F-A3A6-B85DECF776D6}.Release|x64.ActiveCfg = Release|Any CPU
{3381C5DE-57BF-425F-A3A6-B85DECF776D6}.Release|x64.ActiveCfg = Release|Any CPU
{3381C5DE-57BF-425F-A3A6-B85DECF776D6}.Release|x64.Build.0 = Release|Any CPU
{3381C5DE-57BF-425F-A3A6-B85DECF776D6}.Release|x64.Build.0 = Release|Any CPU
{3381C5DE-57BF-425F-A3A6-B85DECF776D6}.Release|x86.ActiveCfg = Release|Any CPU
{3381C5DE-57BF-425F-A3A6-B85DECF776D6}.Release|x86.ActiveCfg = Release|Any CPU
{3381C5DE-57BF-425F-A3A6-B85DECF776D6}.Release|x86.Build.0 = Release|Any CPU
{3381C5DE-57BF-425F-A3A6-B85DECF776D6}.Release|x86.Build.0 = Release|Any CPU
{01B919A1-174A-45E5-A2B5-B509BD66E91A}.Debug|Any CPU.ActiveCfg = Debug|Win32
{01B919A1-174A-45E5-A2B5-B509BD66E91A}.Debug|Any CPU.ActiveCfg = Debug|Win32
{01B919A1-174A-45E5-A2B5-B509BD66E91A}.Debug|ARM.ActiveCfg = Debug|Win32
{01B919A1-174A-45E5-A2B5-B509BD66E91A}.Debug|ARM64.ActiveCfg = Debug|Win32
{01B919A1-174A-45E5-A2B5-B509BD66E91A}.Debug|x64.ActiveCfg = Debug|x64
{01B919A1-174A-45E5-A2B5-B509BD66E91A}.Debug|x64.ActiveCfg = Debug|x64
{01B919A1-174A-45E5-A2B5-B509BD66E91A}.Debug|x64.Build.0 = Debug|x64
{01B919A1-174A-45E5-A2B5-B509BD66E91A}.Debug|x64.Build.0 = Debug|x64
{01B919A1-174A-45E5-A2B5-B509BD66E91A}.Debug|x86.ActiveCfg = Debug|Win32
{01B919A1-174A-45E5-A2B5-B509BD66E91A}.Debug|x86.ActiveCfg = Debug|Win32
{01B919A1-174A-45E5-A2B5-B509BD66E91A}.Debug|x86.Build.0 = Debug|Win32
{01B919A1-174A-45E5-A2B5-B509BD66E91A}.Debug|x86.Build.0 = Debug|Win32
{01B919A1-174A-45E5-A2B5-B509BD66E91A}.Release|Any CPU.ActiveCfg = Release|Win32
{01B919A1-174A-45E5-A2B5-B509BD66E91A}.Release|Any CPU.ActiveCfg = Release|Win32
{01B919A1-174A-45E5-A2B5-B509BD66E91A}.Release|ARM.ActiveCfg = Release|Win32
{01B919A1-174A-45E5-A2B5-B509BD66E91A}.Release|ARM64.ActiveCfg = Release|Win32
{01B919A1-174A-45E5-A2B5-B509BD66E91A}.Release|x64.ActiveCfg = Release|x64
{01B919A1-174A-45E5-A2B5-B509BD66E91A}.Release|x64.ActiveCfg = Release|x64
{01B919A1-174A-45E5-A2B5-B509BD66E91A}.Release|x64.Build.0 = Release|x64
{01B919A1-174A-45E5-A2B5-B509BD66E91A}.Release|x64.Build.0 = Release|x64
{01B919A1-174A-45E5-A2B5-B509BD66E91A}.Release|x86.ActiveCfg = Release|Win32
{01B919A1-174A-45E5-A2B5-B509BD66E91A}.Release|x86.ActiveCfg = Release|Win32
...
...
bench/bench.cpp
View file @
62357e69
...
@@ -2,6 +2,7 @@
...
@@ -2,6 +2,7 @@
#include "../include/ademco_packet.h"
#include "../include/ademco_packet.h"
#include <string.h>
#include <string.h>
#include <stdio.h>
#include <stdio.h>
#include <stdlib.h>
#include <chrono>
#include <chrono>
#include <thread>
#include <thread>
...
@@ -48,7 +49,7 @@ void ademcoPacketBench()
...
@@ -48,7 +49,7 @@ void ademcoPacketBench()
int
packets
=
0
;
int
packets
=
0
;
while
(
res
==
ParseResult
::
RESULT_OK
)
{
while
(
res
==
ParseResult
::
RESULT_OK
)
{
packets
++
;
packets
++
;
if
(
packets
%
10
00
==
0
)
{
if
(
packets
%
5
00
==
0
)
{
printf
(
"
\r
%d/%d %s"
,
packets
,
TIMES
,
ap
.
timestamp_
.
data_
);
printf
(
"
\r
%d/%d %s"
,
packets
,
TIMES
,
ap
.
timestamp_
.
data_
);
}
}
pos
+=
cb
;
pos
+=
cb
;
...
@@ -75,6 +76,4 @@ void ademcoPacketBench()
...
@@ -75,6 +76,4 @@ void ademcoPacketBench()
int
main
()
int
main
()
{
{
ademcoPacketBench
();
ademcoPacketBench
();
system
(
"pause"
);
}
}
build.sh
0 → 100644
View file @
62357e69
#!/bin/bash
mkdir
-p
build
cd
build
g++
-std
=
c++17 ../bench/bench.cpp
-I
../include
-o
bench
g++
-std
=
c++17 ../demo/demo.cpp
-I
../include
-o
demo
g++
-std
=
c++17 ../server_demo/server_demo.cpp
-I
../include
-lpthread
-o
server_demo
server_demo/server_demo.cpp
View file @
62357e69
#if
ndef _CRT_SECURE_NO_WARNINGS
#if
def _WIN32
#define _CRT_SECURE_NO_WARNINGS
#define _CRT_SECURE_NO_WARNINGS
#define _WINSOCK_DEPRECATED_NO_WARNINGS
#include <WinSock2.h>
#pragma comment(lib, "ws2_32.lib")
#define ioctl ioctlsocket
#define socklen_t int
#define close closesocket
#else // linux
#include <unistd.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <sys/ioctl.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#define SOCKET int
#define INVALID_SOCKET -1
#endif
#endif
#define DISABLE_JLIB_LOG2
#define DISABLE_JLIB_LOG2
#include <ademco_packet.h>
#include <ademco_packet.h>
#include <ademco_detail.h>
#include <ademco_detail.h>
#include <WinSock2.h>
#pragma comment(lib, "ws2_32.lib")
#include <thread>
#include <thread>
#include <vector>
#include <vector>
#include <mutex>
#include <mutex>
#include <string.h>
using
namespace
ademco
;
using
namespace
ademco
;
...
@@ -22,9 +37,9 @@ constexpr size_t BUFF_SIZE = 4096;
...
@@ -22,9 +37,9 @@ constexpr size_t BUFF_SIZE = 4096;
struct
Buffer
struct
Buffer
{
{
unsigned
in
t
rpos
;
size_
t
rpos
;
unsigned
in
t
wpos
;
size_
t
wpos
;
char
buff
[
BUFF_SIZE
];
char
buff
[
BUFF_SIZE
];
Buffer
()
{
clear
();
}
Buffer
()
{
clear
();
}
void
clear
()
{
memset
(
this
,
0
,
sizeof
(
Buffer
));
}
void
clear
()
{
memset
(
this
,
0
,
sizeof
(
Buffer
));
}
...
@@ -42,12 +57,14 @@ int main(int argc, char** argv)
...
@@ -42,12 +57,14 @@ int main(int argc, char** argv)
{
{
usage
(
argv
[
0
]);
usage
(
argv
[
0
]);
#ifdef _WIN32
WSADATA
wsaData
;
WSADATA
wsaData
;
int
err
=
WSAStartup
(
MAKEWORD
(
1
,
1
),
&
wsaData
);
int
err
=
WSAStartup
(
MAKEWORD
(
1
,
1
),
&
wsaData
);
if
(
err
!=
0
)
{
if
(
err
!=
0
)
{
printf
(
"init wsa failed %d
\n
"
,
err
);
printf
(
"init wsa failed %d
\n
"
,
err
);
abort
();
abort
();
}
}
#endif
int
port
=
12345
;
int
port
=
12345
;
...
@@ -59,31 +76,46 @@ int main(int argc, char** argv)
...
@@ -59,31 +76,46 @@ int main(int argc, char** argv)
memset
(
&
sAddrIn
,
0
,
sizeof
(
sAddrIn
));
memset
(
&
sAddrIn
,
0
,
sizeof
(
sAddrIn
));
sAddrIn
.
sin_family
=
AF_INET
;
sAddrIn
.
sin_family
=
AF_INET
;
sAddrIn
.
sin_port
=
htons
(
static_cast
<
u_short
>
(
port
));
sAddrIn
.
sin_port
=
htons
(
static_cast
<
u_short
>
(
port
));
sAddrIn
.
sin_addr
.
S_un
.
S_addr
=
ADDR_ANY
;
sAddrIn
.
sin_addr
.
s_addr
=
INADDR_ANY
;
auto
serverSock
=
socket
(
AF_INET
,
SOCK_STREAM
,
IPPROTO_TCP
);
auto
serverSock
=
socket
(
AF_INET
,
SOCK_STREAM
,
IPPROTO_TCP
);
u_long
lngMode
=
1
;
u_long
lngMode
=
1
;
ioctlsocket
(
serverSock
,
FIONBIO
,
(
u_long
FAR
*
)
&
lngMode
);
int
ret
=
ioctl
(
serverSock
,
FIONBIO
,
(
u_long
*
)
&
lngMode
);
bind
(
serverSock
,
(
struct
sockaddr
*
)
&
sAddrIn
,
sizeof
(
sAddrIn
));
if
(
ret
!=
0
)
{
listen
(
serverSock
,
SOMAXCONN
);
fprintf
(
stderr
,
"ioctl failed %d
\n
"
,
ret
);
return
ret
;
}
ret
=
bind
(
serverSock
,
(
struct
sockaddr
*
)
&
sAddrIn
,
sizeof
(
sAddrIn
));
if
(
ret
!=
0
)
{
fprintf
(
stderr
,
"bind failed %d
\n
"
,
ret
);
return
ret
;
}
ret
=
listen
(
serverSock
,
SOMAXCONN
);
if
(
ret
!=
0
)
{
fprintf
(
stderr
,
"listen failed %d
\n
"
,
ret
);
return
ret
;
}
printf
(
"Listening on %s:%d
\n
"
,
inet_ntoa
(
sAddrIn
.
sin_addr
),
ntohs
(
sAddrIn
.
sin_port
));
auto
do_accept
=
[
&
serverSock
]()
{
auto
do_accept
=
[
&
serverSock
]()
{
if
(
clientSock
!=
INVALID_SOCKET
)
{
return
;
}
if
(
clientSock
!=
INVALID_SOCKET
)
{
return
;
}
struct
sockaddr_in
sForeignAddIn
;
struct
sockaddr_in
sForeignAdd
r
In
;
in
t
nLength
=
sizeof
(
struct
sockaddr_in
);
socklen_
t
nLength
=
sizeof
(
struct
sockaddr_in
);
fd_set
rfd
;
fd_set
rfd
;
FD_ZERO
(
&
rfd
);
FD_ZERO
(
&
rfd
);
FD_SET
(
serverSock
,
&
rfd
);
FD_SET
(
serverSock
,
&
rfd
);
timeval
timeout
=
{
1
,
0
};
timeval
timeout
=
{
1
,
0
};
int
nfds
=
select
(
1
,
&
rfd
,
(
fd_set
*
)
0
,
(
fd_set
*
)
0
,
&
timeout
);
int
nfds
=
select
(
serverSock
+
1
,
&
rfd
,
(
fd_set
*
)
0
,
(
fd_set
*
)
0
,
&
timeout
);
printf
(
"do_accept, select ret=%d
\n
"
,
nfds
);
if
(
nfds
>
0
)
{
if
(
nfds
>
0
)
{
FD_CLR
(
serverSock
,
&
rfd
);
FD_CLR
(
serverSock
,
&
rfd
);
clientSock
=
accept
(
serverSock
,
(
struct
sockaddr
*
)
&
sForeignAddIn
,
&
nLength
);
clientSock
=
accept
(
serverSock
,
(
struct
sockaddr
*
)
&
sForeignAddrIn
,
&
nLength
);
printf
(
"Got connection from %s:%d, fd=%lld
\n
"
,
inet_ntoa
(
sForeignAddrIn
.
sin_addr
),
sForeignAddrIn
.
sin_port
,
clientSock
);
}
}
};
};
auto
do_handle
=
[]()
->
ademco
::
ParseResult
{
auto
do_handle
=
[]()
->
ademco
::
ParseResult
{
...
@@ -159,22 +191,22 @@ int main(int argc, char** argv)
...
@@ -159,22 +191,22 @@ int main(int argc, char** argv)
FD_ZERO
(
&
fd_read
);
FD_ZERO
(
&
fd_read
);
FD_SET
(
clientSock
,
&
fd_read
);
FD_SET
(
clientSock
,
&
fd_read
);
BOOL
bRead
=
FD_ISSET
(
clientSock
,
&
fd_read
);
int
bRead
=
FD_ISSET
(
clientSock
,
&
fd_read
);
if
(
!
bRead
)
{
return
;
}
if
(
!
bRead
)
{
return
;
}
char
*
temp
=
clientBuffer
.
buff
+
clientBuffer
.
wpos
;
char
*
temp
=
clientBuffer
.
buff
+
clientBuffer
.
wpos
;
DWORD
dwLenToRead
=
BUFF_SIZE
-
clientBuffer
.
wpos
;
size_t
dwLenToRead
=
BUFF_SIZE
-
clientBuffer
.
wpos
;
int
bytes_transfered
=
recv
(
clientSock
,
temp
,
dwLenToRead
,
0
);
int
bytes_transfered
=
recv
(
clientSock
,
temp
,
dwLenToRead
,
0
);
if
(
SOCKET_ERROR
==
bytes_transfered
)
{
if
(
-
1
==
bytes_transfered
)
{
if
(
WSAEWOULDBLOCK
==
WSAGetLastError
()
)
{
if
(
EAGAIN
==
errno
)
{
return
;
return
;
}
}
}
}
if
(
bytes_transfered
<=
0
)
{
if
(
bytes_transfered
<=
0
)
{
printf
(
"
client offline
\n
"
);
printf
(
"
Client %d offline
\n
"
,
clientSock
);
close
socket
(
clientSock
);
clientSock
=
INVALID_SOCKET
;
close
(
clientSock
);
clientSock
=
INVALID_SOCKET
;
clientBuffer
.
clear
();
clientBuffer
.
clear
();
}
else
{
}
else
{
clientBuffer
.
wpos
+=
bytes_transfered
;
clientBuffer
.
wpos
+=
bytes_transfered
;
...
@@ -189,7 +221,7 @@ int main(int argc, char** argv)
...
@@ -189,7 +221,7 @@ int main(int argc, char** argv)
}
}
if
(
clientBuffer
.
wpos
==
BUFF_SIZE
)
{
if
(
clientBuffer
.
wpos
==
BUFF_SIZE
)
{
memmove
_s
(
clientBuffer
.
buff
,
BUFF_SIZE
,
clientBuffer
.
buff
+
clientBuffer
.
rpos
,
bytes_not_commited
);
memmove
(
clientBuffer
.
buff
,
clientBuffer
.
buff
+
clientBuffer
.
rpos
,
bytes_not_commited
);
memset
(
clientBuffer
.
buff
+
bytes_not_commited
,
0
,
BUFF_SIZE
-
bytes_not_commited
);
memset
(
clientBuffer
.
buff
+
bytes_not_commited
,
0
,
BUFF_SIZE
-
bytes_not_commited
);
clientBuffer
.
wpos
-=
clientBuffer
.
rpos
;
clientBuffer
.
rpos
=
0
;
clientBuffer
.
wpos
-=
clientBuffer
.
rpos
;
clientBuffer
.
rpos
=
0
;
result
=
do_handle
();
result
=
do_handle
();
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment