├── .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 --------------------------------------------------------------------------------