- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
linux下纯C简单的HTTP POST请求 客户端模型=
linux下纯C简单的HTTP?POST请求?客户端模型交代一下故事背景,国内某保险公司,最近上ILOG规则引擎项目,题外话,对于保险里面的车险核保,真的是相当合适.据说,目前规则引擎最成功的就是ILOG了,我稍微看了一下他们的规则描述语言,感觉好傻啊,用中文描述,我觉得这东西要是可以用导图的那种方式,很发散的方式去处理一定很完美!回到正题上,因为公司的核心业务系统是使用pro*c编写的服务运行于IBM AIX上面,并且通过中间件与前端通讯,怎么与java的ILOG规则引擎通讯呢?刚开始想着通过gSoap来实现c对web service的调用,但最后因为安装这个包肯定得通过系统管理员,相当麻烦,而且从来没有用过,不知道是否好用,所以ILOG那边增加一个DTO转换层,即将我们发送过去的xml转换成web services调用,并将返回结果也转换成XML;简单的说就是核心后台通过HTTP POST打包xml发送请求,并且规则引擎那边也返回xml来实现!晕,走题有点严重!其实无非要实现有两点,TCP客户端的模型 HTTP POST协议 先来看看我的TCP模型的实现#ifndef _TUOBAO_TCP_CLIENT_#define _TUOBAO_TCP_CLIENT_#include netinet/in.h#include sys/socket.htypedef struct _tuobao_tcpclient{int socket;int remote_port;char remote_ip[16];?struct sockaddr_in _addr;int connected;} tuobao_tcpclient;int tuobao_tcpclient_create(tuobao_tcpclient *,const char *host, int port);int tuobao_tcpclient_conn(tuobao_tcpclient *);int tuobao_tcpclient_recv(tuobao_tcpclient *,char **lpbuff,int size);int tuobao_tcpclient_send(tuobao_tcpclient *,char *buff,int size);int tuobao_tcpclient_close(tuobao_tcpclient *);#endif上面的代码应该也不用说太多,光看这个这些函数的命名也差不多知道嘛意思了定义一个结构体,有远程IP及端口,连接状态(注:连接状态是为了保持长连接用的,但事实上post请求的时候,根本就没有保持,所以,基本上没用)然后是五个tcp函数tuobao_tcpclient_create:根据服务器IP或者域名,以及端口填充tcpclient结构,主要是申请个socket及填一下sockaddr_intuobao_tcpclient_conn:连接到远程端口,并修改tcpclient的连接状态tuobao_tcpclient_recv:接收远程指定字节数的数据,并分配空间到lpBuf,如果size为0,就阻塞直到连接关闭tuobao_tcpclient_send:发送buf,size为buf长度tuobao_tcpclient_close:关闭socket并且设置连接状态好了,直接贴代码算了tuobao_tcpclient.c#include stdio.h#include stdlib.h#include arpa/inet.h#include netdb.h#include tuobao_tcpclient.h#define BUFFER_SIZE 1024int tuobao_tcpclient_create(tuobao_tcpclient *pclient,const char *host, int port){struct hostent *he;if(pclient == NULL) return -1; memset(pclient,0,sizeof(tuobao_tcpclient));if((he = gethostbyname(host))==NULL){return -2; } pclient-remote_port = port; strcpy(pclient-remote_ip,inet_ntoa( *((struct in_addr *)he-h_addr) )); pclient-_addr.sin_family = AF_INET; pclient-_addr.sin_port = htons(pclient-remote_port); pclient-_addr.sin_addr =
您可能关注的文档
最近下载
- 用高倍显微镜观察叶绿体和细胞质流动实验.doc VIP
- 总账会计面试题目及答案.doc VIP
- 测绘安全生产事故报告及处置办法.docx VIP
- 最新版精选食品安全管理员完整题库298题(含答案) .pdf
- 造纸用压滤脱水靴套加工设备.pdf VIP
- 【腾讯广告营销洞察】Z世代消费力白皮书.pdf VIP
- 统编版(2024)新教材小学三年级道德与法治上册第二单元《爱科学 学科学》(复习课件).pptx VIP
- 一例基于5A护理模式下的AECOPD患者肺康复改善护理个案(1) PPT课件.pptx VIP
- 湘美版小学六年级美术上册-《田间的精灵》同步课件.pptx VIP
- 广州市居住小区配套设施建设暂行规定.doc VIP
原创力文档


文档评论(0)