天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

移動開發多平臺代碼共享

  做移動開發快一年了,有幸接觸了WM、Symbian、Android、iPhone等多個平臺的開發。往往一個軟件需要實現多個平臺的版本,對于不同平臺進行重新編碼是一件很費勁的事情,其實我們可以通過代碼共用技術,實現對一些代碼的重用。

  這一技術的應用,可用帶來不少的好處:

  1. 代碼重用:節約開發和維護的時間

  2. 核心代碼的保護:將核心代碼編譯成庫,只將庫而不是源代碼提供給上層開發人員使用。

  3. 。。。。。。

  本文將實現一個支持這幾個平臺的天氣信息查詢軟件,軟件采用C語言去實現調用WebService接口獲取天氣信息的功能,并將其編譯成各種平臺能夠調用的庫,而UI則采用各個平臺各自的語言去實現,最終實現底層代碼的共用。

先來看看最終的效果圖:

  一、底層代碼的實現

  我們要調用到WebService接口,需要使用網絡

  而對于不同的平臺socket的使用上有細微差異,我通過條件編譯的方式,實現對不同平臺的兼容。

  下面是實現代碼:

//對于VC的DLL,需要導出函數,而其他的則不需要
頭文件Common.h
#ifdef _MSC_VER
#define DLLFLAG _declspec(dllexport)
#
else
#define DLLFLAG
""
#endif
//通過WebService接口獲取天氣信息
DLLFLAG char* getWeather(const char *cityName);
源文件Common.c
#include
<string.h>
#include
<Common.h>
#include
<stdlib.h>
//根據系統加載不同的網絡
#ifdef _MSC_VER
#include
<winsock2.h>
#pragma comment(lib,
"winsock.lib")
#
else
#include
<sys/socket.h>
#include
<NETiNET/in.h>
#include
<arpa/iNET.h>
#include
<NETdb.h>
#endif
#define BUFSIZ
4096
DLLFLAG
char* getWeather(const char *pCityName)
{
//對于VC需要初始化socket版本
#ifdef _MSC_VER
WSADATA wsaData;
int iResult = WSAStartup( MAKEWORD(2,2), &wsaData );
#endif
int sockfd = 0;
struct sockaddr_in addr;
char text[BUFSIZ] = "";
char header[BUFSIZ] = "";
char *content = (char*)malloc(BUFSIZ);
sockfd
= socket(AF_INET, SOCK_STREAM, 0);
addr.sin_family
= AF_INET;
//不同平臺填充地址字段的方式不同
#ifdef _MSC_VER
addr.sin_addr.S_un.S_addr
=iNET_addr("222.73.218.218");
#
else
iNET_aton(
"222.73.218.218",&addr.sin_addr);
#endif
addr.sin_port
= htons(80);
memset(header,
0, sizeof(header));
strcat(header,
"GET /Service.asmx/getWeatherbyCityName?theCityName=");
strcat(header, pCityName);
strcat(header,
"&theDayFlag=Today HTTP/1.1rn");
strcat(header,
"Host: www.ayandy.comrnrn");
connect(sockfd,(struct sockaddr
*)&addr,sizeof(struct sockaddr_in));
send(sockfd, header, strlen(header),
0);
memset(text,
0, BUFSIZ);
memset(content,
0, BUFSIZ);
recv(sockfd, text, BUFSIZ,
0);
strcat(content, text);
//while ( recv(sockfd, text, BUFSIZ, 0) > 0)
//{
// strcat(content, text);
// memset(text, 0, BUFSIZ);
//}
//不同平臺關閉socket的方法不同
#ifdef _MSC_VER
closesocket(sockfd);
WSACleanup();
#
else
shutdown(sockfd, SHUT_RDWR);
#endif
return content;
}

it知識庫移動開發多平臺代碼共享,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 999久久免费高清热精品 | 欧美多毛的大隂道 | 国产三级多多影院 | 亚洲 日韩 自拍 视频一区 | 老师给美女同学开嫩苞 | 一道本无吗d d在线播放 | 学生妹被爆插到高潮无遮挡 | 亚洲中文字幕日本在线观看 | ewp绞死vk失禁编 | 国产又粗又黄又爽的大片 | 98久久人妻无码精品系列蜜桃 | 韩国精品韩国专区久久 | 国产亚洲欧洲日韩在线观看 | 亚洲精品一二三 | 免费视频久久只有精品 | 伊人久久精品AV一区二区 | 国产成人精品久久久久婷婷 | 日韩在线 无码 精品 | 亚洲精品成人AV在线观看爽翻 | 国产剧果冻传媒星空在线观看 | 日本高清片免费观看 | 中文字幕亚洲乱码熟女在线萌芽 | 色一情一乱一伦一区二区三区 | good神马电影伦理午夜 | 美女尿口羞羞视频 | 成人免费小视频 | 日本十八禁无遮无挡漫画 | 久久免费视频在线观看6 | 777米奇色狠狠俺去啦 | 影音先锋av男人资源 | 法国剧丝袜情版h级在线电影 | 成年AV动漫 | 国产亚洲精品V在线观看一 国产亚洲精品a在线观看app | 国产露脸无码A区久久 | 中国大陆一级毛片免费 | 欧美特级特黄a大片免费 | 久久水蜜桃亚洲AV无码精品偷窥 | AV精品爆乳纯肉H漫网站 | 区一区二视频免费观看 | 欧美eee114 | 黄色小说在线 |