- 1、本文档共41页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
网络gprs以及socket(续上) 2)socket操作 1.创建socket: int sci_sock_socket (int family, int type, int protocol); 参数: family : 地址族,目前都设置为AF_INET; type : socket类型,目前有3种 SOCK_STREAM(TCP)\SCOK_DGRAM(UDP)\SOCK_RAW(IP) 我们现在都采用SOCK_STREAM; protocol : 协议,一般设置为0; 返回值: int型的socket描述符,返回值非负时表示成功,否则失败. 例:int socket_handle (socket描述符); socket_handle = sci_sock_socket (AF_INET, SOCK_STREAM, 0); 网络gprs以及socket(续上) 2.socket连接 int sci_sock_connect(long s, struct sci_sockaddr *name, int namelen); 参数: s: socket描述符(创建socket时返回的值); name: socket地址结构体信息; namelen: 上述结构体的长度,sizeof (struct sci_sockaddr ); 返回值: 0表示成功,-1表示失败;可以用sci_sock_error来看错误类型,具体在后面会讲述怎么使用. 例:int socket_handle (socket描述符); int con_ret; struct sci_sockaddr my_addr = {0}; char *szaddr = “72”;//移动的网关 socket_handle = sci_sock_socket(AF_INET, SOCK_STREAM, 0); if (socket_handle 0) return; my_addr .family = AF_INET; my_addr .port = htons(80); my_addr .ip_addr = inet_addr(szaddr); (注:这里inet_addr函数,就是将char型变量转变成unsigned long型) SCI_MEMSET ((void*) my_addr.sa_data, 0, 8*sizeof(char)); con_ret = sci_sock_connect ((long)socket_handle , my_addr, sizeof (struct sci_sockaddr ); 存放连接地址的结构体 网络gprs以及socket(续上) 3.socket发送请求 int sci_sock_send(long s, char *buf, int len, int flags); 参数: s: socket描述符 buf: 存放发送的报头信息的缓存 len: 缓存的大小 flags: 发送设置选项,一般设为0 返回值: -1表示失败;非负值表示成功,也是发送报头的字符数. 例: (续上) int send_ret = 0; char *buf = “GET HTTP/1.1\r\n\r\n”; if (con_ret == 0)//表示连接成功 { send_ret = sci_sock_send((long )socket_handle, buf, strlen(buf), 0); } 网络gprs以及socket(续上) 4.socket接受数据 int sci_sock_recv (long s, char *buf, int len, int flags); 参数: s: socket描述符 buf: 存放接受信息的缓存 len: 缓存的大小 flags: 接受设置选项,一般设为0 返回值: -1表示失败;非负值表示成功,也是接受数据的字符数. 例: (续上) int recv_ret = 0; char buf[1999] = {0}; if (send_ret = 0)//表示发送请求成功 { recv_ret = sci_sock_recv ((long )socket_handle, buf,1999, 0); } 网络gprs以及socket(续上) 5.关闭socket int sci_sock_socketclose ((long*)s); 参数: s: socket描述符; 返回值: 0表示成功
您可能关注的文档
- 葛洲坝大型水电厂继电保护教程范本.pptx
- 2015.10竣工图编制例析.ppt
- 2015.11.16第五单元走近科学的殿堂复习版例析.ppt
- 各类公司安全检查表教程范本.docx
- 各类药品静点注意事项教程范本.pptx
- 各种聚类算法及对比教程范本.docx
- 咕咚--叶永勇教程范本.pptx
- 09腾飞的东方巨龙(复习课)例析.ppt
- 古代建筑的组成和功能教程范本.pptx
- 古典音乐发展史简述教程范本.pptx
- 基于人工智能教育平台的移动应用开发,探讨跨平台兼容性影响因素及优化策略教学研究课题报告.docx
- 高中生物实验:城市热岛效应对城市生态系统服务功能的影响机制教学研究课题报告.docx
- 信息技术行业信息安全法律法规研究及政策建议教学研究课题报告.docx
- 人工智能视角下区域教育评价改革:利益相关者互动与政策支持研究教学研究课题报告.docx
- 6 《垃圾填埋场渗滤液处理与土地资源化利用研究》教学研究课题报告.docx
- 小学音乐与美术教师跨学科协作模式构建:人工智能技术助力教学创新教学研究课题报告.docx
- 《航空航天3D打印技术对航空器装配工艺的创新与效率提升》教学研究课题报告.docx
- 教育扶贫精准化策略研究:人工智能技术在区域教育中的应用与创新教学研究课题报告.docx
- 《区块链技术在电子政务电子档案管理中的数据完整性保障与优化》教学研究课题报告.docx
- 《中医护理情志疗法对癌症患者心理状态和生活质量提升的长期追踪研究》教学研究课题报告.docx
文档评论(0)