资源描述:
《socket方式实现网络通信》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、下边用的是socket方式实现网络通信,如果要实现http通信,需要在第五步的时候,先发送http的一些头文件。说明此次通信是http,然后再发送具体的数据就行啦。mtk平台手机基于gprs连接pc的实现方式(tcp通讯方式)1.建立dataaccount(上网帐号) MMI层发送PRT_MMI_PS_SET_GPRS_DATA_ACCOUNT_REQ消息到L4C层, 在消息中设定dataaccount的id(1-10),自定义名称,APN(cmnet,cmwap),用户名,密码,DNS等消息。 /**DTCNTGPRSSetAccou
2、ntReq()? **/2.创建socket 手机上用socket建立连接和PC用socket建立连接的原理是一样的,只是API函数不一样。 kal_int8soc_create(kal_uint8domain,socket_type_enumtype,kal_uint8protocol,module_typemod_id,kal_uint32nwk_account_id);3.设置socket的异步非阻塞模式 kal_int8soc_setsockopt(kal_int8s,kal_uint16option,kal_uint8*va
3、l,kal_uint8val_size); 这里的第二个参数option设置为SOC_NBIO(socket非阻塞模式) kal_int8soc_setsockopt(kal_int8s,kal_uint16option,kal_uint8*val,kal_uint8val_size); 这里的第二个参数option设置为SOC_ASYNC(异步I/O)4.建立连接 kal_int8soc_connect(kal_int8s,sockaddr_struct*addr);5.发送数据 ---------------标记,发送头文件 ka
4、l_int32soc_send(kal_int8s, kal_uint8*buf,kal_int32len,kal_uint8flags);6.读取数据 kal_int32soc_recv(kal_int8s, kal_uint8*buf,kal_int32len,kal_uint8flags);7.关闭连接 kal_int8soc_close(kal_int8s);一、MTK平台Socket联网过程熟悉PC机编程的人都知道,Socket编程接口分两套:TCP和UDP;TCP和UDP中又有服务器端和客户端的概念,这里讲的是TCP的客户端
5、编程接口。MTK平台中Socket创建步骤: 1、soc_create() 创建Socket; 2、soc_setsockopt 设置Socket为非阻塞模式; 3、soc_setsockopt 设置Socket选项为连接,读,写,关闭;不清楚为什么要连续设置两次,如有高人路过,请指点; 4、如果是CMNET联网并且请求中用到了英文域名还需要解析域名soc_gethostbyname,除非使用ip作为域名,解析出来的IP作为我们建立连接的目标IP;如果是CMWAP联网,直接跳到第5步
6、,直接连接移动或联通的网关:10.0.0.172:80; 5、soc_connect与服务器建立连接; 6、soc_send 发送请求; 7、soc_recv 接收服务器返回的数据; 8、soc_close 关闭Socket; 9、如果需要关闭数据账户soc_close_nwk_account二、CMNET,CMWAP方式下的HTTP请求内容格式HTTP请求格式:GET方法MTK模拟器中wap浏览器发送的请求内容“GET/go_13596557HTTP/1.1Ho
7、st:kong.netUser-Agent:SQH_D480B_01/LB19504/WAP2.0ProfileAccept: application/vnd.wap.wmlc,** //(想当长,省去后面部分)Accept-Charset:utf-8,utf-16,iso-8859-1,iso-10646-ucs-2,GB2312,windows-1252,us-asciiAccept-Language:zh-tw,zh-cn,enCookie:JSESSIONID=aAQP0FIXp3z7Connection:Keep-Alive
8、“ POST方法对一些需要向服务器传入参数的请求,按名称搜索等请求。还以空中网天气查询为例,之中的其他城市天气查询,输入其他城市名称或电话区号查询: “POST/weather/search.jsp?set