我的世界c语言函数包,C语言发送与接收mcpack

int fd  = 0;

fd = ul_tcpconnect(ip,port);

if(fd<=0){

printf("connect %s:%d:

failed",ip,port);

return -1;

}

char buff[65535*10];

char tmpbuf[1024*10];

memset(buff,0,sizeof(buff));

memset(tmpbuf,0,sizeof(tmpbuf));

nshead_t *nh =(nshead_t*)(buff);

char *mcbuf =(char *)(nh+1);

int mcbuflen = sizeof(buff)-sizeof(nshead_t);

int ret=0;

mc_pack_t *reqpack = mc_pack_open_w(2

,mcbuf,mcbuflen,tmpbuf,sizeof(tmpbuf));

if( 0 != (ret = MC_PACK_PTR_ERR(reqpack)) ){

printf("error open

pack\n");

mc_pack_perror(ret);

}

ret = mc_pack_put_int32(reqpack,

"status",0);

ret = mc_pack_put_int64(reqpack,

"t_crw_in",0);

ret = mc_pack_put_int64(reqpack,

"fetchtime",0);

ret = mc_pack_put_int64(reqpack,

"lastmodified",0);

ret = mc_pack_put_int64(reqpack, "siteip",0);

ret = mc_pack_put_str(reqpack, "url", url);

if(ret < 0)

{

printf("errr3\n");

}

ret = mc_pack_put_str(reqpack, "redirected_url", "");

ret = mc_pack_put_str(reqpack, "cookie", "");

ret = mc_pack_put_str(reqpack, "fetching_info", "");

ret = mc_pack_put_str(reqpack, "fetching_info", "");

ret = mc_pack_put_str(reqpack, "req_headers", "");

ret = mc_pack_put_str(reqpack, "http_header", "");

ret = mc_pack_put_str(reqpack, "resp_headers", "");

ret = mc_pack_put_str(reqpack, "body", body);

if(ret < 0)

{

fprintf(stderr, "%s:%d

error!\n", __FILE__, __LINE__);

}

ret = mc_pack_put_int32(reqpack, "body_size",

strlen(body));

if(ret < 0)

{

fprintf(stderr, "%s:%d

error!\n", __FILE__, __LINE__);

}

ret = mc_pack_put_int32(reqpack, "page_len",

(int)strlen(body));

if(ret < 0)

{

fprintf(stderr, "%s:%d

error!\n", __FILE__, __LINE__);

}

nh->body_len = mc_pack_get_size(reqpack);

int it_count = mc_pack_get_item_count(reqpack);

strcpy(nh->provider, "zsc");

mc_pack_close(reqpack);

char tt[1024];

mc_pack_t *testpack =

mc_pack_open_r(mcbuf,mcbuflen,tt,sizeof(tt));

if( 0 != (ret = MC_PACK_PTR_ERR(testpack)) ){

mc_pack_perror(ret);

}

// 通过TCP连接向服务发送请求,并捕获respack返回包

ret = nshead_write(fd,nh,1000);

if(0 != ret)

nshead_error(ret);

if(ret!=0){

printf("write

err[%m],ret[%d]\n",ret);

close(fd);

return -1;

}

char resbuff[65535*100];

char tmprbuf[1024*100];

memset(resbuff,0,sizeof resbuff);

memset(tmprbuf,0,sizeof tmprbuf);

nshead_t *nh_res =(nshead_t*)(resbuff);

char *mcrbuf =(char *)(nh_res+1);

int mcrbuflen = sizeof(resbuff)-sizeof(nshead_t);

ret = nshead_read(fd,nh_res,sizeof(resbuff), 1000);

if(ret!=0){

fprintf(stderr, "read

err[%m],ret[%d]\n",ret);

close(fd);

return -1;

}

mc_pack_t

*respack=mc_pack_open_r(mcrbuf,mcrbuflen,tmprbuf,sizeof(tmprbuf));

it_count = mc_pack_get_item_count(respack);

if(it_count > 0)

{

printPack(respack);

}

close(fd);

mc_pack_close(reqpack);

mc_pack_close(respack);

mc_pack_finish(reqpack);

mc_pack_finish(respack);

return 0;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值