├── .gitignore
├── HKUdpThread.cpp
├── HKUdpThread.h
├── README.md
├── ReadMe.txt
├── common
├── GMError.h
├── HYDefine.h
├── HyperLink.cpp
├── HyperLink.h
├── OSThread.cpp
├── OSThread.h
├── Socket.cpp
├── Socket.h
├── SocketUtils.cpp
├── SocketUtils.h
├── StrPtrLen.cpp
├── StrPtrLen.h
├── UDPSocket.cpp
├── UDPSocket.h
├── UtilTool.cpp
├── UtilTool.h
├── tinyxml.cpp
├── tinyxml.h
├── tinyxmlerror.cpp
└── tinyxmlparser.cpp
├── res
├── sample_udp_ipc.ico
└── sample_udp_ipc.rc2
├── resource.h
├── sample_udp_ipc.cpp
├── sample_udp_ipc.h
├── sample_udp_ipc.rc
├── sample_udp_ipc.sln
├── sample_udp_ipc.vcxproj
├── sample_udp_ipc.vcxproj.filters
├── sample_udp_ipcDlg.cpp
├── sample_udp_ipcDlg.h
├── stdafx.cpp
├── stdafx.h
└── targetver.h
/.gitignore:
--------------------------------------------------------------------------------
1 | ## Ignore Visual Studio temporary files, build results, and
2 | ## files generated by popular Visual Studio add-ons.
3 | ##
4 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
5 |
6 | # User-specific files
7 | *.suo
8 | *.user
9 | *.userosscache
10 | *.sln.docstates
11 |
12 | # User-specific files (MonoDevelop/Xamarin Studio)
13 | *.userprefs
14 |
15 | # Build results
16 | [Dd]ebug/
17 | [Dd]ebugPublic/
18 | [Rr]elease/
19 | [Rr]eleases/
20 | x64/
21 | x86/
22 | bld/
23 | [Bb]in/
24 | [Oo]bj/
25 | [Ll]og/
26 |
27 | # Visual Studio 2015 cache/options directory
28 | .vs/
29 | # Uncomment if you have tasks that create the project's static files in wwwroot
30 | #wwwroot/
31 |
32 | # MSTest test Results
33 | [Tt]est[Rr]esult*/
34 | [Bb]uild[Ll]og.*
35 |
36 | # NUNIT
37 | *.VisualState.xml
38 | TestResult.xml
39 |
40 | # Build Results of an ATL Project
41 | [Dd]ebugPS/
42 | [Rr]eleasePS/
43 | dlldata.c
44 |
45 | # .NET Core
46 | project.lock.json
47 | project.fragment.lock.json
48 | artifacts/
49 | **/Properties/launchSettings.json
50 |
51 | *_i.c
52 | *_p.c
53 | *_i.h
54 | *.ilk
55 | *.meta
56 | *.obj
57 | *.pch
58 | *.pdb
59 | *.pgc
60 | *.pgd
61 | *.rsp
62 | *.sbr
63 | *.tlb
64 | *.tli
65 | *.tlh
66 | *.tmp
67 | *.tmp_proj
68 | *.log
69 | *.vspscc
70 | *.vssscc
71 | .builds
72 | *.pidb
73 | *.svclog
74 | *.scc
75 |
76 | # Chutzpah Test files
77 | _Chutzpah*
78 |
79 | # Visual C++ cache files
80 | ipch/
81 | *.aps
82 | *.ncb
83 | *.opendb
84 | *.opensdf
85 | *.sdf
86 | *.cachefile
87 | *.VC.db
88 | *.VC.VC.opendb
89 |
90 | # Visual Studio profiler
91 | *.psess
92 | *.vsp
93 | *.vspx
94 | *.sap
95 |
96 | # TFS 2012 Local Workspace
97 | $tf/
98 |
99 | # Guidance Automation Toolkit
100 | *.gpState
101 |
102 | # ReSharper is a .NET coding add-in
103 | _ReSharper*/
104 | *.[Rr]e[Ss]harper
105 | *.DotSettings.user
106 |
107 | # JustCode is a .NET coding add-in
108 | .JustCode
109 |
110 | # TeamCity is a build add-in
111 | _TeamCity*
112 |
113 | # DotCover is a Code Coverage Tool
114 | *.dotCover
115 |
116 | # Visual Studio code coverage results
117 | *.coverage
118 | *.coveragexml
119 |
120 | # NCrunch
121 | _NCrunch_*
122 | .*crunch*.local.xml
123 | nCrunchTemp_*
124 |
125 | # MightyMoose
126 | *.mm.*
127 | AutoTest.Net/
128 |
129 | # Web workbench (sass)
130 | .sass-cache/
131 |
132 | # Installshield output folder
133 | [Ee]xpress/
134 |
135 | # DocProject is a documentation generator add-in
136 | DocProject/buildhelp/
137 | DocProject/Help/*.HxT
138 | DocProject/Help/*.HxC
139 | DocProject/Help/*.hhc
140 | DocProject/Help/*.hhk
141 | DocProject/Help/*.hhp
142 | DocProject/Help/Html2
143 | DocProject/Help/html
144 |
145 | # Click-Once directory
146 | publish/
147 |
148 | # Publish Web Output
149 | *.[Pp]ublish.xml
150 | *.azurePubxml
151 | # TODO: Comment the next line if you want to checkin your web deploy settings
152 | # but database connection strings (with potential passwords) will be unencrypted
153 | *.pubxml
154 | *.publishproj
155 |
156 | # Microsoft Azure Web App publish settings. Comment the next line if you want to
157 | # checkin your Azure Web App publish settings, but sensitive information contained
158 | # in these scripts will be unencrypted
159 | PublishScripts/
160 |
161 | # NuGet Packages
162 | *.nupkg
163 | # The packages folder can be ignored because of Package Restore
164 | **/packages/*
165 | # except build/, which is used as an MSBuild target.
166 | !**/packages/build/
167 | # Uncomment if necessary however generally it will be regenerated when needed
168 | #!**/packages/repositories.config
169 | # NuGet v3's project.json files produces more ignorable files
170 | *.nuget.props
171 | *.nuget.targets
172 |
173 | # Microsoft Azure Build Output
174 | csx/
175 | *.build.csdef
176 |
177 | # Microsoft Azure Emulator
178 | ecf/
179 | rcf/
180 |
181 | # Windows Store app package directories and files
182 | AppPackages/
183 | BundleArtifacts/
184 | Package.StoreAssociation.xml
185 | _pkginfo.txt
186 |
187 | # Visual Studio cache files
188 | # files ending in .cache can be ignored
189 | *.[Cc]ache
190 | # but keep track of directories ending in .cache
191 | !*.[Cc]ache/
192 |
193 | # Others
194 | ClientBin/
195 | ~$*
196 | *~
197 | *.dbmdl
198 | *.dbproj.schemaview
199 | *.jfm
200 | *.pfx
201 | *.publishsettings
202 | orleans.codegen.cs
203 |
204 | # Since there are multiple workflows, uncomment next line to ignore bower_components
205 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
206 | #bower_components/
207 |
208 | # RIA/Silverlight projects
209 | Generated_Code/
210 |
211 | # Backup & report files from converting an old project file
212 | # to a newer Visual Studio version. Backup files are not needed,
213 | # because we have git ;-)
214 | _UpgradeReport_Files/
215 | Backup*/
216 | UpgradeLog*.XML
217 | UpgradeLog*.htm
218 |
219 | # SQL Server files
220 | *.mdf
221 | *.ldf
222 | *.ndf
223 |
224 | # Business Intelligence projects
225 | *.rdl.data
226 | *.bim.layout
227 | *.bim_*.settings
228 |
229 | # Microsoft Fakes
230 | FakesAssemblies/
231 |
232 | # GhostDoc plugin setting file
233 | *.GhostDoc.xml
234 |
235 | # Node.js Tools for Visual Studio
236 | .ntvs_analysis.dat
237 | node_modules/
238 |
239 | # Typescript v1 declaration files
240 | typings/
241 |
242 | # Visual Studio 6 build log
243 | *.plg
244 |
245 | # Visual Studio 6 workspace options file
246 | *.opt
247 |
248 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
249 | *.vbw
250 |
251 | # Visual Studio LightSwitch build output
252 | **/*.HTMLClient/GeneratedArtifacts
253 | **/*.DesktopClient/GeneratedArtifacts
254 | **/*.DesktopClient/ModelManifest.xml
255 | **/*.Server/GeneratedArtifacts
256 | **/*.Server/ModelManifest.xml
257 | _Pvt_Extensions
258 |
259 | # Paket dependency manager
260 | .paket/paket.exe
261 | paket-files/
262 |
263 | # FAKE - F# Make
264 | .fake/
265 |
266 | # JetBrains Rider
267 | .idea/
268 | *.sln.iml
269 |
270 | # CodeRush
271 | .cr/
272 |
273 | # Python Tools for Visual Studio (PTVS)
274 | __pycache__/
275 | *.pyc
276 |
277 | # Cake - Uncomment if you are using it
278 | # tools/**
279 | # !tools/packages.config
280 |
281 | # Telerik's JustMock configuration file
282 | *.jmconfig
283 |
284 | # BizTalk build output
285 | *.btp.cs
286 | *.btm.cs
287 | *.odx.cs
288 | *.xsd.cs
289 | *.exp
290 | *.idb
291 | *.exe
292 | *.xml
293 |
--------------------------------------------------------------------------------
/HKUdpThread.cpp:
--------------------------------------------------------------------------------
1 | /******************************************************
2 | * 浩一科技,提供云录播、云监控的全平台无插件解决方案。
3 | * 支持按需直播,多点布控,分布式海量存储,动态扩容;
4 | * 支持微信扫码登录,全平台帐号统一,关联微信小程序;
5 | * 支持多种数据输入:摄像头IPC、rtmp、rtsp、MP4文件;
6 | * 支持全实时、全动态、全网页管理,网页前后台兼容IE8;
7 | * 支持多终端无插件自适应播放,flvjs/hls/rtmp自动适配;
8 | ******************************************************
9 | * 官方网站 => https://myhaoyi.com
10 | * 技术博客 => http://blog.csdn.net/haoyitech
11 | * 开源代码 => https://github.com/HaoYiTech/
12 | * 云监控群 => 483663026(QQ群)
13 | * 云录播群 => 630379661(QQ群)
14 | ******************************************************
15 | * CHKUdpThread => 海康(IPC)网络摄像机自动探测类。
16 | * 注意:本类从线程基础类中继承,并定义了探测参数。
17 | ******************************************************/
18 |
19 | #include "stdafx.h"
20 | #include "HKUdpThread.h"
21 | #include "SocketUtils.h"
22 | #include "UtilTool.h"
23 | #include "tinyxml.h"
24 |
25 | CHKUdpThread::CHKUdpThread()
26 | {
27 | }
28 |
29 | CHKUdpThread::~CHKUdpThread()
30 | {
31 | // 先关闭UDPSocket对象,会快速退出...
32 | m_UDPSocket.Close();
33 | // 停止线程,等待退出...
34 | this->StopAndWaitForThread();
35 | }
36 |
37 | GM_Error CHKUdpThread::InitMulticast()
38 | {
39 | // 建立UDP,接收组播...
40 | GM_Error theErr = GM_NoErr;
41 | theErr = m_UDPSocket.Open();
42 | if( theErr != GM_NoErr ) {
43 | MsgLogGM(theErr);
44 | return theErr;
45 | }
46 | // 设置重复使用端口...
47 | m_UDPSocket.ReuseAddr();
48 | // 必须直接绑定组播端口...
49 | theErr = m_UDPSocket.Bind(INADDR_ANY, DEF_MCAST_PORT);
50 | if( theErr != GM_NoErr ) {
51 | MsgLogGM(theErr);
52 | }
53 | // 创建事件对象...
54 | theErr = m_UDPSocket.CreateEvent();
55 | if( theErr != GM_NoErr ) {
56 | MsgLogGM(theErr);
57 | return theErr;
58 | }
59 | // 加入组播组,接收数据...
60 | theErr = m_UDPSocket.JoinMulticastForRecv(inet_addr(DEF_MCAST_ADDRV4), INADDR_ANY);
61 | if( theErr != GM_NoErr ) {
62 | MsgLogGM(theErr);
63 | return theErr;
64 | }
65 | // 加入组播组,使用第一IP地址发送数据包...
66 | ASSERT(SocketUtils::GetNumIPAddrs() >= 1 );
67 | theErr = m_UDPSocket.JoinMulticastForSend(inet_addr(DEF_MCAST_ADDRV4), htonl(SocketUtils::GetIPAddr(0)));
68 | if( theErr != GM_NoErr ) {
69 | MsgLogGM(theErr);
70 | return theErr;
71 | }
72 | // 设置TTL和组播地址,简化SendTo参数......
73 | m_UDPSocket.SetTtl(32);
74 | m_UDPSocket.SetRemoteAddr(DEF_MCAST_ADDRV4, DEF_MCAST_PORT);
75 | // 启动组播接收线程...
76 | this->Start();
77 | return theErr;
78 | }
79 |
80 | void CHKUdpThread::Entry()
81 | {
82 | // 首先,发送一个查询数据包...
83 | GM_Error theErr = GM_NoErr;
84 | theErr = this->SendCmdQuiry();
85 |
86 | // 开始线程循环过程...
87 | DWORD dwStartTimeMS = ::GetTickCount();
88 | while( !this->IsStopRequested() ) {
89 | // 等待并处理组播事件,没有错误,继续处理...
90 | theErr = this->WaitAndProcMulticast();
91 | if( theErr != GM_NoErr ) {
92 | MsgLogGM(theErr);
93 | return;
94 | }
95 | // 每隔 XX 秒发送一次查询数据包指令...
96 | if( (::GetTickCount() - dwStartTimeMS) >= (DEF_MCAST_STEP * 1000) ) {
97 | dwStartTimeMS = ::GetTickCount();
98 | theErr = this->SendCmdQuiry();
99 | }
100 | }
101 | }
102 | //
103 | // 发送查询指令 - 组播命令...
104 | GM_Error CHKUdpThread::SendCmdQuiry()
105 | {
106 | GM_Error theErr = GM_NoErr;
107 | GUID theGuid = {0};
108 | string strGuid;
109 | // 准备摄像机查询命令需要的数据...
110 | HRESULT hr = ::CoCreateGuid(&theGuid);
111 | ASSERT( theGuid != GUID_NULL );
112 | strGuid = CUtilTool::GUIDToStr(theGuid);
113 | // 组合字符串,直接发送xml格式的命令...
114 | TCHAR szCmd[MAX_PATH] = {0};
115 | sprintf(szCmd, "%s\r\n%sinquiry", XML_DECLARE_UTF8, strGuid.c_str());
116 | theErr = m_UDPSocket.SendTo(szCmd, strlen(szCmd));
117 | // 发送数据包失败的处理...
118 | if( theErr != GM_NoErr ) {
119 | MsgLogGM(theErr);
120 | return theErr;
121 | }
122 | return GM_NoErr;
123 | }
124 | //
125 | // 等待并处理组播数据...
126 | GM_Error CHKUdpThread::WaitAndProcMulticast()
127 | {
128 | DWORD dwIndex = 0;
129 | GM_Error theErr = GM_NoErr;
130 | WSAEVENT theEvent = m_UDPSocket.GetWSAEvent();
131 | SOCKET theSocket = m_UDPSocket.GetSocket();
132 | WSANETWORKEVENTS theNetwork = {0};
133 | ASSERT( theEvent != NULL && theSocket != INVALID_SOCKET );
134 | // 等待网络事件到达...
135 | dwIndex = WaitForSingleObject(theEvent, DEF_MCAST_TIME);
136 | if( this->IsStopRequested() ) {
137 | theErr = GM_Thread_Close;
138 | MsgLogGM(theErr);
139 | return theErr;
140 | }
141 | // 如果发生超时错误,直接返回正确...
142 | if( dwIndex == WSA_WAIT_FAILED || dwIndex == WSA_WAIT_TIMEOUT || dwIndex == WAIT_IO_COMPLETION ) {
143 | //theErr = GM_Err_Timeout;
144 | //MsgLogGM(theErr);
145 | return GM_NoErr;
146 | }
147 | // 是有效的通知,进一步查询网络事件,对错误信息进行必要加工处理...
148 | ASSERT( dwIndex == WSA_WAIT_EVENT_0 );
149 | if( SOCKET_ERROR == WSAEnumNetworkEvents(theSocket, theEvent, &theNetwork) ) {
150 | theErr = WSAGetLastError();
151 | theErr = (theErr == GM_NoErr) ? GM_NetClose : theErr;
152 | MsgLogGM(theErr);
153 | return theErr;
154 | }
155 | // 没有网络事件,空转一次...
156 | if( theNetwork.lNetworkEvents == 0 )
157 | return GM_NoErr;
158 | // 对网络事件进行移位操作,目的得到错误号...
159 | int nEventBit = 0;
160 | int nEventTemp = theNetwork.lNetworkEvents >> 1;
161 | while( nEventTemp > 0 ) {
162 | ++nEventBit;
163 | nEventTemp >>= 1;
164 | }
165 | ASSERT( nEventBit >= 0 );
166 | // 网络层发生了FD_CLOSE事件...
167 | if( theNetwork.lNetworkEvents & FD_CLOSE ) {
168 | theErr = GM_NetClose;
169 | MsgLogGM(theErr);
170 | return theErr;
171 | }
172 | // 网络事件有错误信息...
173 | if( theNetwork.iErrorCode[nEventBit] > 0 ) {
174 | theErr = theNetwork.iErrorCode[nEventBit];
175 | MsgLogGM(theErr);
176 | return theErr;
177 | }
178 | // 执行没有错误的网络事件...
179 | ASSERT( theErr == GM_NoErr );
180 | return this->ProcessEvent(theNetwork.lNetworkEvents);
181 | }
182 | //
183 | // 处理网络事件...
184 | GM_Error CHKUdpThread::ProcessEvent(int eventBits)
185 | {
186 | GM_Error theErr = GM_NoErr;
187 | // 处理读取事件通知...
188 | if( eventBits & FD_READ ) {
189 | theErr = this->ForRead();
190 | if( theErr != GM_NoErr ) {
191 | MsgLogGM(theErr);
192 | return theErr;
193 | }
194 | eventBits &= ~ FD_READ;
195 | }
196 | // 不肯能再有其它事件通知...
197 | ASSERT( eventBits == 0 );
198 | return GM_NoErr;
199 | }
200 | //
201 | // 处理读取事件通知...
202 | GM_Error CHKUdpThread::ForRead()
203 | {
204 | UInt32 uRomAddr = 0;
205 | UInt16 uRomPort = 0;
206 | UInt32 uLenReturn = 0;
207 | char szBuffer[2048] = {0};
208 | // 获取网络组播数据内容...
209 | ASSERT(SocketUtils::GetNumIPAddrs() >= 1 );
210 | UInt32 iRemoteAddr = SocketUtils::GetIPAddr(0);
211 | GM_Error theErr = m_UDPSocket.RecvFrom(&uRomAddr, &uRomPort, szBuffer, 2048, &uLenReturn);
212 | if( theErr != GM_NoErr ) {
213 | MsgLogGM(theErr);
214 | return theErr;
215 | }
216 | // 打印获取的数据信息...
217 | TRACE("\r%s\r\n", szBuffer);
218 | // 扔掉来自本机的数据包...
219 | if( iRemoteAddr == uRomAddr )
220 | return GM_NoErr;
221 | ASSERT( iRemoteAddr != uRomAddr );
222 | // 解析获取到的数据包 => xml...
223 | TiXmlNode * lpNode = NULL;
224 | TiXmlElement * lpDataElem = NULL;
225 | TiXmlElement * lpRootElem = NULL;
226 | TiXmlDocument theXDoc;
227 | theXDoc.Parse(szBuffer);
228 | lpRootElem = theXDoc.RootElement();
229 | // 解析xml节点错误...
230 | if( lpRootElem == NULL ) {
231 | theErr = GM_No_Xml_Node;
232 | MsgLogGM(theErr);
233 | return theErr;
234 | }
235 | // 遍历xml节点数据内容...
236 | LPCTSTR lpszText = NULL;
237 | LPCTSTR lpszValue = NULL;
238 | lpNode = lpRootElem->FirstChild();
239 | while( lpNode != NULL ) {
240 | lpDataElem = lpNode->ToElement();
241 | lpszValue = lpDataElem->Value();
242 | lpszText = lpDataElem->GetText();
243 | ASSERT( lpszValue != NULL && lpszText != NULL );
244 | // 去掉 Uuid 这个节点数据...
245 | if( stricmp(lpszValue, "Uuid") != 0 ) {
246 | //theMapData[lpszValue] = lpszText;
247 | }
248 | // 打印获取到的网络摄像机相关节点信息...
249 | TRACE("%s: %s\n", lpszValue, lpszText);
250 | // 继续下一个节点...
251 | lpNode = lpNode->NextSibling();
252 | }
253 | // 通知管理层,发现一个摄像头,需要进行事件处理...
254 | return GM_NoErr;
255 | }
--------------------------------------------------------------------------------
/HKUdpThread.h:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HaoYiTech/sample_udp_ipc/5fd4a9a57ea4747eb833ba5bd131536de4f42d6a/HKUdpThread.h
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # HaoYiTech
2 | ******************************************************
3 | * 浩一科技,提供云录播、云监控的全平台无插件解决方案。
4 | * 支持按需直播,多点布控,分布式海量存储,动态扩容;
5 | * 支持微信扫码登录,全平台帐号统一,关联微信小程序;
6 | * 支持多种数据输入:摄像头IPC、rtmp、rtsp、MP4文件;
7 | * 支持全实时、全动态、全网页管理,网页前后台兼容IE8;
8 | * 支持多终端无插件自适应播放,flvjs/hls/rtmp自动适配;
9 | ******************************************************
10 | * 官方网站 => https://myhaoyi.com
11 | * 技术博客 => http://blog.csdn.net/haoyitech
12 | * 开源代码 => https://github.com/HaoYiTech/
13 | * 云监控群 => 483663026(QQ群)
14 | * 云录播群 => 630379661(QQ群)
15 | ******************************************************
16 | * 这个示例工程可以自动探测同一个网络内的海康IPC并显示出来;
17 | * 原理是根据SADPTool抓包分析之后实现的;
18 | * 通过向固定的组播地址和端口发送探测包实现;
19 | * 实现了ONVIF协议对接流程当中的设备搜索过程。
20 | ******************************************************
21 |
--------------------------------------------------------------------------------
/ReadMe.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HaoYiTech/sample_udp_ipc/5fd4a9a57ea4747eb833ba5bd131536de4f42d6a/ReadMe.txt
--------------------------------------------------------------------------------
/common/GMError.h:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HaoYiTech/sample_udp_ipc/5fd4a9a57ea4747eb833ba5bd131536de4f42d6a/common/GMError.h
--------------------------------------------------------------------------------
/common/HYDefine.h:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HaoYiTech/sample_udp_ipc/5fd4a9a57ea4747eb833ba5bd131536de4f42d6a/common/HYDefine.h
--------------------------------------------------------------------------------
/common/HyperLink.cpp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HaoYiTech/sample_udp_ipc/5fd4a9a57ea4747eb833ba5bd131536de4f42d6a/common/HyperLink.cpp
--------------------------------------------------------------------------------
/common/HyperLink.h:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HaoYiTech/sample_udp_ipc/5fd4a9a57ea4747eb833ba5bd131536de4f42d6a/common/HyperLink.h
--------------------------------------------------------------------------------
/common/OSThread.cpp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HaoYiTech/sample_udp_ipc/5fd4a9a57ea4747eb833ba5bd131536de4f42d6a/common/OSThread.cpp
--------------------------------------------------------------------------------
/common/OSThread.h:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HaoYiTech/sample_udp_ipc/5fd4a9a57ea4747eb833ba5bd131536de4f42d6a/common/OSThread.h
--------------------------------------------------------------------------------
/common/Socket.cpp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HaoYiTech/sample_udp_ipc/5fd4a9a57ea4747eb833ba5bd131536de4f42d6a/common/Socket.cpp
--------------------------------------------------------------------------------
/common/Socket.h:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HaoYiTech/sample_udp_ipc/5fd4a9a57ea4747eb833ba5bd131536de4f42d6a/common/Socket.h
--------------------------------------------------------------------------------
/common/SocketUtils.cpp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HaoYiTech/sample_udp_ipc/5fd4a9a57ea4747eb833ba5bd131536de4f42d6a/common/SocketUtils.cpp
--------------------------------------------------------------------------------
/common/SocketUtils.h:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HaoYiTech/sample_udp_ipc/5fd4a9a57ea4747eb833ba5bd131536de4f42d6a/common/SocketUtils.h
--------------------------------------------------------------------------------
/common/StrPtrLen.cpp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HaoYiTech/sample_udp_ipc/5fd4a9a57ea4747eb833ba5bd131536de4f42d6a/common/StrPtrLen.cpp
--------------------------------------------------------------------------------
/common/StrPtrLen.h:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HaoYiTech/sample_udp_ipc/5fd4a9a57ea4747eb833ba5bd131536de4f42d6a/common/StrPtrLen.h
--------------------------------------------------------------------------------
/common/UDPSocket.cpp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HaoYiTech/sample_udp_ipc/5fd4a9a57ea4747eb833ba5bd131536de4f42d6a/common/UDPSocket.cpp
--------------------------------------------------------------------------------
/common/UDPSocket.h:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HaoYiTech/sample_udp_ipc/5fd4a9a57ea4747eb833ba5bd131536de4f42d6a/common/UDPSocket.h
--------------------------------------------------------------------------------
/common/UtilTool.cpp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HaoYiTech/sample_udp_ipc/5fd4a9a57ea4747eb833ba5bd131536de4f42d6a/common/UtilTool.cpp
--------------------------------------------------------------------------------
/common/UtilTool.h:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HaoYiTech/sample_udp_ipc/5fd4a9a57ea4747eb833ba5bd131536de4f42d6a/common/UtilTool.h
--------------------------------------------------------------------------------
/common/tinyxml.cpp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HaoYiTech/sample_udp_ipc/5fd4a9a57ea4747eb833ba5bd131536de4f42d6a/common/tinyxml.cpp
--------------------------------------------------------------------------------
/common/tinyxml.h:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HaoYiTech/sample_udp_ipc/5fd4a9a57ea4747eb833ba5bd131536de4f42d6a/common/tinyxml.h
--------------------------------------------------------------------------------
/common/tinyxmlerror.cpp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HaoYiTech/sample_udp_ipc/5fd4a9a57ea4747eb833ba5bd131536de4f42d6a/common/tinyxmlerror.cpp
--------------------------------------------------------------------------------
/common/tinyxmlparser.cpp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HaoYiTech/sample_udp_ipc/5fd4a9a57ea4747eb833ba5bd131536de4f42d6a/common/tinyxmlparser.cpp
--------------------------------------------------------------------------------
/res/sample_udp_ipc.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HaoYiTech/sample_udp_ipc/5fd4a9a57ea4747eb833ba5bd131536de4f42d6a/res/sample_udp_ipc.ico
--------------------------------------------------------------------------------
/res/sample_udp_ipc.rc2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HaoYiTech/sample_udp_ipc/5fd4a9a57ea4747eb833ba5bd131536de4f42d6a/res/sample_udp_ipc.rc2
--------------------------------------------------------------------------------
/resource.h:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HaoYiTech/sample_udp_ipc/5fd4a9a57ea4747eb833ba5bd131536de4f42d6a/resource.h
--------------------------------------------------------------------------------
/sample_udp_ipc.cpp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HaoYiTech/sample_udp_ipc/5fd4a9a57ea4747eb833ba5bd131536de4f42d6a/sample_udp_ipc.cpp
--------------------------------------------------------------------------------
/sample_udp_ipc.h:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HaoYiTech/sample_udp_ipc/5fd4a9a57ea4747eb833ba5bd131536de4f42d6a/sample_udp_ipc.h
--------------------------------------------------------------------------------
/sample_udp_ipc.rc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HaoYiTech/sample_udp_ipc/5fd4a9a57ea4747eb833ba5bd131536de4f42d6a/sample_udp_ipc.rc
--------------------------------------------------------------------------------
/sample_udp_ipc.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 11.00
3 | # Visual Studio 2010
4 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sample_udp_ipc", "sample_udp_ipc.vcxproj", "{70DF29D1-DC48-4F2F-B007-08383EAA3942}"
5 | EndProject
6 | Global
7 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
8 | Debug|Win32 = Debug|Win32
9 | Release|Win32 = Release|Win32
10 | EndGlobalSection
11 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
12 | {70DF29D1-DC48-4F2F-B007-08383EAA3942}.Debug|Win32.ActiveCfg = Debug|Win32
13 | {70DF29D1-DC48-4F2F-B007-08383EAA3942}.Debug|Win32.Build.0 = Debug|Win32
14 | {70DF29D1-DC48-4F2F-B007-08383EAA3942}.Release|Win32.ActiveCfg = Release|Win32
15 | {70DF29D1-DC48-4F2F-B007-08383EAA3942}.Release|Win32.Build.0 = Release|Win32
16 | EndGlobalSection
17 | GlobalSection(SolutionProperties) = preSolution
18 | HideSolutionNode = FALSE
19 | EndGlobalSection
20 | EndGlobal
21 |
--------------------------------------------------------------------------------
/sample_udp_ipc.vcxproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | Win32
7 |
8 |
9 | Release
10 | Win32
11 |
12 |
13 |
14 | {70DF29D1-DC48-4F2F-B007-08383EAA3942}
15 | sample_udp_ipc
16 | MFCProj
17 |
18 |
19 |
20 | Application
21 | true
22 | MultiByte
23 | Static
24 |
25 |
26 | Application
27 | false
28 | true
29 | Unicode
30 | Static
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 | true
44 |
45 |
46 | false
47 |
48 |
49 |
50 | Use
51 | TurnOffAllWarnings
52 | Disabled
53 | WIN32;_WINDOWS;_DEBUG;%(PreprocessorDefinitions)
54 | common;%(AdditionalIncludeDirectories)
55 |
56 |
57 | Windows
58 | true
59 | Version.lib;Psapi.lib;%(AdditionalDependencies)
60 |
61 |
62 | false
63 | true
64 | _DEBUG;%(PreprocessorDefinitions)
65 |
66 |
67 | 0x0804
68 | _DEBUG;%(PreprocessorDefinitions)
69 | $(IntDir);%(AdditionalIncludeDirectories)
70 |
71 |
72 |
73 |
74 | Level3
75 | Use
76 | MaxSpeed
77 | true
78 | true
79 | WIN32;_WINDOWS;NDEBUG;%(PreprocessorDefinitions)
80 |
81 |
82 | Windows
83 | true
84 | true
85 | true
86 |
87 |
88 | false
89 | true
90 | NDEBUG;%(PreprocessorDefinitions)
91 |
92 |
93 | 0x0804
94 | NDEBUG;%(PreprocessorDefinitions)
95 | $(IntDir);%(AdditionalIncludeDirectories)
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 | Create
137 | Create
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
--------------------------------------------------------------------------------
/sample_udp_ipc.vcxproj.filters:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
7 |
8 |
9 | {93995380-89BD-4b04-88EB-625FBE52EBFB}
10 | h;hpp;hxx;hm;inl;inc;xsd
11 |
12 |
13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
15 |
16 |
17 | {671ec6a3-1299-45f2-befb-1d04c611fc6a}
18 |
19 |
20 |
21 |
22 |
23 | 资源文件
24 |
25 |
26 | 资源文件
27 |
28 |
29 |
30 |
31 | 头文件
32 |
33 |
34 | 头文件
35 |
36 |
37 | 头文件
38 |
39 |
40 | 头文件
41 |
42 |
43 | 头文件
44 |
45 |
46 | common
47 |
48 |
49 | common
50 |
51 |
52 | common
53 |
54 |
55 | common
56 |
57 |
58 | common
59 |
60 |
61 | common
62 |
63 |
64 | 头文件
65 |
66 |
67 | common
68 |
69 |
70 | common
71 |
72 |
73 | common
74 |
75 |
76 | common
77 |
78 |
79 |
80 |
81 | 源文件
82 |
83 |
84 | 源文件
85 |
86 |
87 | 源文件
88 |
89 |
90 | common
91 |
92 |
93 | common
94 |
95 |
96 | common
97 |
98 |
99 | common
100 |
101 |
102 | common
103 |
104 |
105 | 源文件
106 |
107 |
108 | common
109 |
110 |
111 | common
112 |
113 |
114 | common
115 |
116 |
117 | common
118 |
119 |
120 | common
121 |
122 |
123 |
124 |
125 | 资源文件
126 |
127 |
128 |
--------------------------------------------------------------------------------
/sample_udp_ipcDlg.cpp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HaoYiTech/sample_udp_ipc/5fd4a9a57ea4747eb833ba5bd131536de4f42d6a/sample_udp_ipcDlg.cpp
--------------------------------------------------------------------------------
/sample_udp_ipcDlg.h:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HaoYiTech/sample_udp_ipc/5fd4a9a57ea4747eb833ba5bd131536de4f42d6a/sample_udp_ipcDlg.h
--------------------------------------------------------------------------------
/stdafx.cpp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HaoYiTech/sample_udp_ipc/5fd4a9a57ea4747eb833ba5bd131536de4f42d6a/stdafx.cpp
--------------------------------------------------------------------------------
/stdafx.h:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HaoYiTech/sample_udp_ipc/5fd4a9a57ea4747eb833ba5bd131536de4f42d6a/stdafx.h
--------------------------------------------------------------------------------
/targetver.h:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HaoYiTech/sample_udp_ipc/5fd4a9a57ea4747eb833ba5bd131536de4f42d6a/targetver.h
--------------------------------------------------------------------------------