SDK网络连接/多线程示例代码
2010年06月09日
static BOOL SendMsg(wstring url) { DWORD dwNetWorkStatus = QueryNetWorkStatus(); HINTERNET hSession = NULL,hConnection = NULL,hOpenRequest = NULL; //如果没有网络则连接网络 if (dwNetWorkStatus == NETWORK_NONE) { Dial_StartGprsConnect2(0,GPRS_FORCE_APP_TYPE); //联网后重新查询网络类型 dwNetWorkStatus = QueryNetWorkStatus(); } //判定是否为cmwap,使用代理 if (dwNetWorkStatus == NETWORK_EDGE_PROXY) hSession = InternetOpen(L"Meizu", INTERNET_OPEN_TYPE_PROXY, L"10.0.0.172:80", NULL, 0); else hSession = InternetOpen(L"Meizu", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0); string url_utf8 = MzConvert::UnicodeToUTF8(url);//编码 url = ::MzConvert::string2wstring(url_utf8); //打开链接,获取文件 HINTERNET hHttpFile = InternetOpenUrlW(hSession, url.c_str(), NULL, 0,INTERNET_FLAG_RELOAD, 0); //读取文件内容 char buf[1024]={0}; DWORD dwRead=0; BOOL ReadReturn=InternetReadFile(hHttpFile,(LPVOID)buf, 1024+1,&dwRead); wstring str = MzConvert::UTF8ToUnicode(string(buf));//解码 //关闭连接 InternetCloseHandle(hSession); return true; }这里面编码解码很重要的,不然中文乱码问题很头疼!
多线程:
声明:static DWORD WINAPI ThreadProc (LPVOID pArg);
static wstring SEND = L"http://quickfetion.appspot.com/sendmsg?username=?;password=?;sendto=?;message=?";
定义:static DWORD WINAPI ThreadProc (LPVOID pArg)
{
wstring *c = (wstring*)pArg;
wstring url = wstring(*c);
CQuickFxMainWnd::SendMsg(url);
return 1;
}
调用:HANDLE hThread = CreateThread(NULL, 0, ::ThreadProc,&SEND, 0, 0);
这里注意函数定义形式,static关键字,还有全局概念,否则出现线程阻塞,不可访问资源的错误!
个人理解,各位高手莫要见笑!!!
附上编码解码的头文件:
using namespace std; class MzConvert { public: static wstring string2wstring(const string& s) { int len; int slength = (int)s.length() + 1; len = MultiByteToWideChar(CP_ACP, 0, s.c_str(), slength, 0, 0); wchar_t* buf = new wchar_t[len]; MultiByteToWideChar(CP_ACP, 0, s.c_str(), slength, buf, len); std::wstring r(buf); delete[] buf; return r; } static wstring ANSIToUnicode( const string& str ) { int len = str.length(); int unicodeLen = ::MultiByteToWideChar( CP_ACP, 0, str.c_str(), -1, NULL, 0 ); wchar_t * pUnicode; pUnicode = new wchar_t[unicodeLen+1]; memset(pUnicode,0,(unicodeLen+1)*sizeof(wchar_t)); MultiByteToWideChar( CP_ACP, 0, str.c_str(), -1, (LPWSTR)pUnicode, unicodeLen ); wstring rt = ( wchar_t* )pUnicode; delete pUnicode; return rt; } static string UnicodeToANSI( const wstring& str ) { char* pElementText; int iTextLen; // wide char to multi char iTextLen = WideCharToMultiByte( CP_ACP, 0, str.c_str(), -1, NULL, 0, NULL, NULL ); pElementText = new char[iTextLen + 1]; memset( ( void* )pElementText, 0, sizeof( char ) * ( iTextLen + 1 ) ); WideCharToMultiByte( CP_ACP, 0, str.c_str(), -1, pElementText, iTextLen, NULL, NULL ); string strText = pElementText; delete[] pElementText; return strText; } static wstring UTF8ToUnicode( const string& str ) { int len = str.length(); int unicodeLen = ::MultiByteToWideChar( CP_UTF8, 0, str.c_str(), -1, NULL, 0 ); wchar_t * pUnicode; pUnicode = new wchar_t[unicodeLen+1]; memset(pUnicode,0,(unicodeLen+1)*sizeof(wchar_t)); MultiByteToWideChar( CP_UTF8, 0, str.c_str(), -1, (LPWSTR)pUnicode, unicodeLen ); wstring rt = ( wchar_t* )pUnicode; delete pUnicode; return rt; } static string UnicodeToUTF8( const wstring& str ) { char* pElementText; int iTextLen; // wide char to multi char iTextLen = WideCharToMultiByte( CP_UTF8, 0, str.c_str(), -1, NULL, 0, NULL, NULL ); pElementText = new char[iTextLen + 1]; memset( ( void* )pElementText, 0, sizeof( char ) * ( iTextLen + 1 ) ); WideCharToMultiByte( CP_UTF8, 0, str.c_str(), -1, pElementText, iTextLen, NULL, NULL ); string strText = pElementText; delete[] pElementText; return strText; } };
[ 本帖最后由 zhaxg 于 2009-10-13 08:59 编辑 ]
发表评论
-
《Windows 核心编程》 -- 内核对象 --札记
2012-01-20 10:13 967《Windows 核心编程》 -- 内核对象 --札记 20 ... -
多线程编程(一)――CreateThread
2012-01-20 10:13 976多线程编程(一)――Creat ... -
CWinThread类,以及和createthread API的区别
2012-01-20 10:13 976CWinThread类,以及和createthread API ... -
FCKEditor 2.6.4 Asp.net上传文件没有权限解决
2012-01-20 10:13 767FCKEditor 2.6.4 Asp.net上传文件没有权限 ... -
Flash务实主义(四)――Flash中的MVC
2012-01-19 15:13 622Flash务实主义(四)――Flash中的MVC 2011年 ... -
只学一点点:我的技术学习策略
2012-01-19 15:13 636只学一点点:我的技术学 ... -
Flash Flex 国际化问题解决方案大全
2012-01-19 15:13 1091Flash Flex 国际化问题解 ... -
flex 问题
2012-01-19 15:13 599flex 问题 2011年04月04日 ... -
一名优秀的Flex开发者需要知道的10样东西
2012-01-19 15:13 587一名优秀的Flex开发者需要知道的10样东西 2010年06 ... -
最全的文件扩展名大全(二)
2012-01-17 05:00 868最全的文件扩展名大全(二) 2010年11月13日 PD ... -
DirectUI 的初步分析
2012-01-17 05:00 872DirectUI 的初步分析 2011年05月04日 D ... -
什么软件支持什么格式
2012-01-17 05:00 809什么软件支持什么格式 ... -
eclipse工具使用技巧&关联Android源码
2012-01-17 05:00 853eclipse工具使用技巧&关联Android源码 ... -
FMS客户端ActionScript 语言的参考
2012-01-16 03:51 740FMS客户端ActionScript 语言 ... -
Learning Flash Media Server 3中文版-第4章之2/6
2012-01-16 03:51 661Learning Flash Media Server 3 ... -
fms远程共享对象
2012-01-16 03:51 718fms远程共享对象 2011年0 ... -
FMS/red5客户端信息对象
2012-01-16 03:51 1332FMS/red5客户端信息对象 2010年11月16日 ... -
FMS_api
2012-01-16 03:51 726FMS_api 2010年03月11日 //====== ...
相关推荐
OPENG开发的示例代码c++版 演示了OpenG的使用方法,内含几个实例,一个实例就3个文件。 p2p vb实例。 p2p+technology文档。 P2P视频技术源码(含开发文档) PcShare 内含远程控制、进程管理、文件操作、视频控制...
OPENG开发的示例代码c++版 演示了OpenG的使用方法,内含几个实例,一个实例就3个文件。 p2p vb实例。 p2p+technology文档。 P2P视频技术源码(含开发文档) PcShare 内含远程控制、进程管理、文件操作、视频控制...
OPENG开发的示例代码c++版 演示了OpenG的使用方法,内含几个实例,一个实例就3个文件。 p2p vb实例。 p2p+technology文档。 P2P视频技术源码(含开发文档) PcShare 内含远程控制、进程管理、文件操作、视频控制...
作为使用androidsdk构建这些应用程序的实用指南书籍,《android高级编程》从始至终穿插了一系列示例项目,每个项目都引入android的新功能和新技术,以助您达到最圆满的学习效果。书中介绍android的所有基本功能,并...
OPENG开发的示例代码c++版 演示了OpenG的使用方法,内含几个实例,一个实例就3个文件。 p2p vb实例。 p2p+technology文档。 P2P视频技术源码(含开发文档) PcShare 内含远程控制、进程管理、文件操作、视频控制...
OPENG开发的示例代码c++版 演示了OpenG的使用方法,内含几个实例,一个实例就3个文件。 p2p vb实例。 p2p+technology文档。 P2P视频技术源码(含开发文档) PcShare 内含远程控制、进程管理、文件操作、视频控制...
OPENG开发的示例代码c++版 演示了OpenG的使用方法,内含几个实例,一个实例就3个文件。 p2p vb实例。 p2p+technology 文档。 P2P视频技术源码(含开发文档) 目前的协议有如下一些特点: 1) 客户向服务器发送请求,...
从该项目代码中,可以学会如何同步、多线程、HTTP连接等技术。 7、 Pedometer Pedometer应用用于记录你每天走路步数的。尽管记录不一定精准,但是从这个项目中,可以学习几个不同的技术:加速器交互、语音更新...
8.1 多线程案例--计时器 155 8.2 线程概念 156 8.2.1 进程概念 156 8.2.2 线程概念 156 8.3 Java中的线程 157 8.3.1 Java中的实现线程体方式1 157 8.3.2 Java中的实现线程体方式2 160 8.3.3 Java中的实现线程...
从该项目代码中,可以学会如何同步、多线程、HTTP连接等技术。 7、 Pedometer Pedometer应用用于记录你每天走路步数的。尽管记录不一定精准,但是从这个项目中,可以学习几个不同的技术:加速器交互、语音更新...
从该项目代码中,可以学会如何同步、多线程、HTTP连接等技术。 7、 Pedometer Pedometer应用用于记录你每天走路步数的。尽管记录不一定精准,但是从这个项目中,可以学习几个不同的技术:加速器交互、语音更新...
Java读写文本文件的示例代码 1个目标文件。 java俄罗斯方块 一个目标文件。 Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密 Java非对称加密源程序代码实例,本例中使用RSA加密技术,...
采用多线程方式对指定IP地址段(或单机)进行安全漏洞检测,支持插件功能,提供了图形界面和命令行两种操作方式,扫描内容包括:远程服务类型、操作系统类型及版本,各种弱口令漏洞、后门、应用服务漏洞、网络设备漏洞...
采用多线程方式对指定IP地址段(或单机)进行安全漏洞检测,支持插件功能,提供了图形界面和命令行两种操作方式,扫描内容包括:远程服务类型、操作系统类型及版本,各种弱口令漏洞、后门、应用服务漏洞、网络设备...
3、连接复用,因此在多线程获取连接时无需阻塞; 4、同步调用; 5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换...
6.3.3 创建远程线程、将代码注入其他进程中执行 167 6.3.4 创建纤程、删除纤程、调度纤程 170 6.3.5 纤程与线程的互相转换 171 6.4 进程状态信息 176 6.4.1 PS API与Tool help API 176 6.4.2 遍历系统中...
Java读写文本文件的示例代码 1个目标文件。 java俄罗斯方块 一个目标文件。 Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密 Java非对称加密源程序代码实例,本例中使用RSA加密技术,...
3、连接复用,因此在多线程获取连接时无需阻塞; 4、同步调用; 5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换...
3、连接复用,因此在多线程获取连接时无需阻塞; 4、同步调用; 5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换...