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

移動(dòng)開發(fā)多平臺(tái)代碼共享

  做移動(dòng)開發(fā)快一年了,有幸接觸了WM、Symbian、Android、iPhone等多個(gè)平臺(tái)的開發(fā)。往往一個(gè)軟件需要實(shí)現(xiàn)多個(gè)平臺(tái)的版本,對(duì)于不同平臺(tái)進(jìn)行重新編碼是一件很費(fèi)勁的事情,其實(shí)我們可以通過(guò)代碼共用技術(shù),實(shí)現(xiàn)對(duì)一些代碼的重用。

  這一技術(shù)的應(yīng)用,可用帶來(lái)不少的好處:

  1. 代碼重用:節(jié)約開發(fā)和維護(hù)的時(shí)間

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

  3. 。。。。。。

  本文將實(shí)現(xiàn)一個(gè)支持這幾個(gè)平臺(tái)的天氣信息查詢軟件,軟件采用C語(yǔ)言去實(shí)現(xiàn)調(diào)用WebService接口獲取天氣信息的功能,并將其編譯成各種平臺(tái)能夠調(diào)用的庫(kù),而UI則采用各個(gè)平臺(tái)各自的語(yǔ)言去實(shí)現(xiàn),最終實(shí)現(xiàn)底層代碼的共用。

先來(lái)看看最終的效果圖:

  一、底層代碼的實(shí)現(xiàn)

  我們要調(diào)用到WebService接口,需要使用網(wǎng)絡(luò)

  而對(duì)于不同的平臺(tái)socket的使用上有細(xì)微差異,我通過(guò)條件編譯的方式,實(shí)現(xiàn)對(duì)不同平臺(tái)的兼容。

  下面是實(shí)現(xiàn)代碼:

//對(duì)于VC的DLL,需要導(dǎo)出函數(shù),而其他的則不需要
頭文件Common.h
#ifdef _MSC_VER
#define DLLFLAG _declspec(dllexport)
#
else
#define DLLFLAG
""
#endif
//通過(guò)WebService接口獲取天氣信息
DLLFLAG char* getWeather(const char *cityName);
源文件Common.c
#include
<string.h>
#include
<Common.h>
#include
<stdlib.h>
//根據(jù)系統(tǒng)加載不同的網(wǎng)絡(luò)庫(kù)
#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)
{
//對(duì)于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;
//不同平臺(tái)填充地址字段的方式不同
#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);
//}
//不同平臺(tái)關(guān)閉socket的方法不同
#ifdef _MSC_VER
closesocket(sockfd);
WSACleanup();
#
else
shutdown(sockfd, SHUT_RDWR);
#endif
return content;
}

it知識(shí)庫(kù)移動(dòng)開發(fā)多平臺(tái)代碼共享,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 玩弄放荡人妻一区二区三区 | 无套暴躁白丝秘书 | 好硬好湿好大再深一点动态图 | 97午夜理论片影院在线播放 | 亚洲成 人a影院青久在线观看 | 性夜a爽黄爽 | 成人天堂婷婷青青视频在线观看 | 黄色三级三级免费看 | 国产亚洲精品精品国产亚洲综合 | 日韩a视频在线观看 | 日韩精品 电影一区 亚洲高清 | 亚洲视频 在线观看 | jk制服喷水| 国产片MV在线观看 | 久久免费黄色 | 成人在线视频网站 | 116美女写真成人午夜视频 | 日本久久不射 | 国产中文字幕乱码一区 | 亚洲欧美成人在线 | 同桌别揉我奶了嗯啊 | 窝窝午夜色视频国产精品东北 | 一受n攻高h全肉np | 人妻天天爽夜夜爽三区麻豆A片 | 人与禽交3d动漫羞羞动漫 | 国语对白嫖老妇胖老太 | 久久国产主播福利在线 | 囯产免费久久久久久国产免费 | 国产亚洲一区二区三区啪 | 狠狠色狠狠色综合日日2019 | 国产美女又黄又爽又色视频网站 | 一区一区三区产品 | 动漫美女人物被黄漫在线看 | 动漫美女被吸奶 | 亚洲高清在线天堂精品 | 亚洲三级在线中文字幕 | XXOO麻豆国产在线九九爱 | 国产乱妇乱子在线播视频播放网站 | 火影忍者高清无码黄漫 | 欧美精品高潮呻吟AV久久 | 免费国产午夜理论不卡 |