lz要先知道什么是socket,它是TCP/IP协议的API。再上层是http udp之类传输报文协议。而什么是服务器,如你所说tomcat服务器,他是一个http(s)服务器。处理由客户发送的HTTP报文。并返回报文给客户。
简单来说,http就是socket的一个封装。所以c语言使用socket理所当然能访问任何服务器。至于使用什么格式,你可以看看HTTP报文格式。
② c语言如何封装一个带有可变参数的方法
需要借用C语言的VA_LIST宏定义,及相关操作来实现可变参数。
VA_LIST所在头文件:#include <stdarg.h>,用法如下:
(1)首先在函数里定义一具VA_LIST型的变量,这个变量是指向参数的指针;
(2)然后用VA_START宏初始化刚定义的VA_LIST变量;
(3)然后用VA_ARG返回可变的参数,VA_ARG的第二个参数是你要返回的参数的类型(如果函数有多个可变参数的,依次调用VA_ARG获取各个参数);
(4)最后用VA_END宏结束可变参数的获取。
以下是一个自定义打印接口的实现:
intmy_printf(constchar*fmt,...)//...表示参数可变
{
va_listargs;//定义va_list
staticchargc_PrintfOutBuff[1000];
va_start(args,fmt);//初始化
vsnprintf((char*)gc_PrintfOutBuff,1000,(char*)fmt,args);//这里没有使用VA_ARG取回单个变量,而是借用vsnprinf一次性读取。
va_end(args);//结束获取
puts("%s",(constchar*)gc_PrintfOutBuff);//使用。
return0;
}
③ C语言,http报文,post请求,求大神详解
URL要放在POST和HTTP/1.1之间,注意加空格。
URL好像不需要域名部分。
④ 用c语言写一个http头文件查找函数。
#include <stdio.h>
char * xxx(char *all, char *target){
int i,j,k;
static char t[80];
j = strlen(all);
k = strlen(target);
printf("j=%d k=%d\n",j,k);
for (i=0;i<j-k-1;i++){
if (strncmp(&all[i],target,k)==0) { sscanf( &all[i+k+1],"%s",t);
printf("t = %s\n",t);
break;}
}
return t;
}
main(){
char all[]="GET / HTTP/1.1 Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3 Sec-WebSocket-Key: mHCYmHhGCn44x+g6quuzYg== Cache-Control: no-cache";
char txt[]="Sec-WebSocket-Key:";
char trs[80];
printf("%s",xxx(all,txt));
}
---------
注意 char all[]=" ...." ; 写在1行,或通过文件读入。
char txt[]="Sec-WebSocket-Key:"; 字符串里的冒号不要漏掉,
若不写冒号,计算sscanf位置 时要再加1。sscanf( &all[i+k+2],"%s",t);
⑤ C语言http访问本机如何写host
lz要先知道什么是socket,它是TCP/IP协议的API。再上层是httpudp之类传输报文协议。而什么是服务器,如你所说tomcat服务器,他是一个http(s)服务器。处理由客户发送的HTTP报文。并返回报文给客户。简单来说,http就是socket的一个封装。所以c语言使用socket理所当然能访问任何服务器。至于使用什么格式,你可以看看HTTP报文格式。
⑥ c语言构造http报文,实现输入一个网址,然后下载网页源码. 比如说输入www.baidu.com,最好是在linux环境下的.
就是发http请求,看看http协议,或者直接抓包看
⑦ 如何用c语言实现http服务器
//服务端简易代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<err.h>
#include<event.h>
#include<evhttp.h>
voidhttp_handle(structevhttp_request*req,void*arg);/*HTTPRequestHandle*/
intmain(){
structevhttp*httpd;
event_init();
httpd=evhttp_start("0.0.0.0",2345);
if(httpd==NULL){
fprintf(stderr,"Error:Unabletolistenon%s:%d ");
exit(1);
}
evhttp_set_timeout(httpd,2000);
evhttp_set_gencb(httpd,http_handle,NULL);
event_dispatch();
evhttp_free(httpd);
return0;
}
voidhttp_handle(structevhttp_request*req,void*arg){
structevbuffer*buf;
buf=evbuffer_new();
/*Responsetheclient*/
evhttp_send_reply(req,HTTP_OK,"OK",buf);
//evbuffer_add_printf(buf,"%s","HTTPSQS_AUTH_FAILED");
/*Releasethememory*/
evbuffer_free(buf);
fprintf(stderr,"Send ");
}
编译:编译时把libevent的类库中的.so文件和.h文件连接进来。
⑧ 用纯C语言 怎样编程,解析HTTP协议。
按照HTTP协议的规定,理清楚相关功能。
然后软件模型的方式解释HTTP的运行过程,可以使用UML语言。
然后将UML语言转换成C语言即可。
⑨ C语言是怎样实现封装,继承,多态的
封装,继承,多态的是C++的面向对象的特性,C语言不具备这些特性。
⑩ C语言实现HTTP协议
要会C中的TCP客户端操作
C不会,不清楚,似乎是用Socket?
然后就是要找点教程学HTTP了,比如:
http://sites.google.com/site/xierch/text/http