导航:首页 > 操作系统 > linuxc请求http请求

linuxc请求http请求

发布时间:2023-05-28 03:22:00

㈠ 在linux下如何利用C语言实现HTTP的get和post方法

下载wget的源码看看就知道了

㈡ 怎么用LINUX发送HTTP请求

之前用GET方式一直不行,接口那边调出log看滑雀说是空指针,说我们有参悔拦数没传过来。我想可能和我传了多个参数有关。 于是我信前早改用POST方式也就是curl -d就可以了。

㈢ linux c++中要如何调用一个http接口

可以使用libcurl 库

https://curl.haxx.se/libcurl/

#include<stdio.h>
#include<curl/curl.h>

intmain(void)
{
CURL*curl;
CURLcoderes;

curl=curl_easy_init();
if(curl){
curl_easy_setopt(curl,CURLOPT_URL,"curl.haxx.se");
res=curl_easy_perform(curl);

/*alwayscleanup*/
curl_easy_cleanup(curl);
}
return0;
}

更多的例子在这里https://curl.haxx.se/libcurl/c/example.html

㈣ 设计一个linux c语言,Http协议的服务器,用socket收发消息,简单点,求代码and注释。

OK
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/ip.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <stdlib.h>
#include <strings.h>
#include <unistd.h>
#include <string.h>

int main(int argc,char *argv[])
{
int sockfd,new_socket;
int sock_value;
char buf[] = "hello! China!I Love You\n";

struct sockaddr_in client_;
struct sockaddr_in server_;

int SIZE = sizeof(struct sockaddr_in);

if(argc != 2){
fprintf(stderr,"The two number!\n");
exit(1);
}

if((sock_value = atoi(argv[1])) < 0){
fprintf(stderr,"socket error!\n");
exit(1);
}

if((sockfd = socket(PF_INET,SOCK_STREAM, 0)) == -1){
perror("socket");
exit(1);
}

bzero(&server_,SIZE);

server_.sin_family = PF_INET;
server_.sin_port = htons(sock_value);
server_.sin_addr.s_addr = INADDR_ANY;

if(bind(sockfd,(struct sockaddr *)(&server_),SIZE) == -1){
perror("bind");
exit(1);
}

if(listen(sockfd, 12) == -1){
perror("listen");
exit(1);
}

printf("Waiting ... ...\n");

while(1){
if((new_socket = accept(sockfd,(struct sockaddr *)(&client_),&SIZE)) == -1){
perror("accept");
exit(1);
}

printf("The client IP is %s\n",inet_ntoa(client_.sin_addr));
printf("The socket is %d\n",ntohs(client_.sin_port));

if(write(new_socket,buf,strlen(buf)) == -1){
perror("write");
exit(1);
}

int my;
char mybuf[1024];

if((my = read(new_socket, mybuf,1024)) == -1){
perror("read");
exit(1);
}

mybuf[my] = '\0';
printf("#++++#++++#:%s\n",mybuf);

close(new_socket);

}

close(sockfd);

return 0;
}

#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/ip.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <stdlib.h>
#include <strings.h>
#include <unistd.h>

int main(int argc,char *argv[])
{
int sockfd;
int sock_value;
char buf[1024];
char mybuf[] = "Linux\n";
int read_count;

struct sockaddr_in client_;
struct sockaddr_in server_;

int SIZE = sizeof(struct sockaddr_in);

if(argc != 3){
fprintf(stderr,"The two number!\n");
exit(1);
}

if((sock_value = atoi(argv[2])) < 0){
fprintf(stderr,"socket error!\n");
exit(1);
}

if((sockfd = socket(PF_INET,SOCK_STREAM, 0)) == -1){
perror("socket");
exit(1);
}

bzero(&client_,SIZE);
bzero(&server_,SIZE);

client_.sin_family = PF_INET;
client_.sin_port = htons(52252);
client_.sin_addr.s_addr = INADDR_ANY;

server_.sin_family = PF_INET;
server_.sin_port = htons(sock_value);
server_.sin_addr.s_addr = inet_addr(argv[1]);

if(connect(sockfd,(struct sockaddr *)(&server_),SIZE) == -1){
perror("connect");
exit(1);
}

if((read_count = read(sockfd,buf,1024)) == -1){
perror("read");
exit(1);
}

buf[read_count] = '\0';
printf("#----#----#:%s\n",buf);

if(write(sockfd, mybuf,6) == -1){
perror("write");
exit(1);
}

close(sockfd);

exit(0);

return 0;
}

㈤ 如何通过 c/c++ 实现http请求

示例程序,转载自CNBLOG,做了针对C语言编译器的适应性修正:

#include<stdio.h>
#include<winsock2.h>

#pragmacomment(lib,"ws2_32.lib")/*WinSock使用的库函数*/

/*定义常量*/
#defineHTTP_DEF_PORT80/*连接的缺省端口*/
#defineHTTP_BUF_SIZE1024/*缓冲区的大小*/
#defineHTTP_HOST_LEN256/*主机名长度*/

char*http_req_hdr_tmpl="GET%sHTTP/1.1 "
"Accept:image/gif,image/jpeg,*/* Accept-Language:zh-cn "
"Accept-Encoding:gzip,deflate Host:%s:%d "
"User-Agent:Huiyong'sBrowser<0.1> Connection:Keep-Alive ";


/**************************************************************************
*
*函数功能:解析命令行参数,分别得到主机名,端口号和文件名.命令行格式:
*[http://www..com:8080/index.html]
*
*参数说明:[IN]buf,字符串指针数组;
*[OUT]host,保存主机;
*[OUT]port,端口;
*[OUT]file_name,文件名;
*
*返回值:void.
*
**************************************************************************/
voidhttp_parse_request_url(constchar*buf,char*host,
unsignedshort*port,char*file_name)
{
intlength=0;
charport_buf[8];
char*buf_end=(char*)(buf+strlen(buf));
char*begin,*host_end,*colon,*file;

/*查找主机的开始位置*/

begin=(char*)(strstr(buf,"//"));
begin=(begin?begin+2:(char*)(buf));

colon=strchr(begin,':');
host_end=strchr(begin,'/');

if(host_end==NULL)
{
host_end=buf_end;
}
else
{/*得到文件名*/
file=strrchr(host_end,'/');
if(file&&(file+1)!=buf_end)
strcpy(file_name,file+1);
}
if(colon)/*得到端口号*/
{
colon++;

length=host_end-colon;
memcpy(port_buf,colon,length);
port_buf[length]=0;
*port=atoi(port_buf);

host_end=colon-1;
}

/*得到主机信息*/
length=host_end-begin;
memcpy(host,begin,length);
host[length]=0;
}


intmain(intargc,char**argv)
{
WSADATAwsa_data;
SOCKEThttp_sock=0;/*socket句柄*/
structsockaddr_inserv_addr;/*服务器地址*/
structhostent*host_ent;

intresult=0,send_len;
chardata_buf[HTTP_BUF_SIZE];
charhost[HTTP_HOST_LEN]="127.0.0.1";
unsignedshortport=HTTP_DEF_PORT;
unsignedlongaddr;
charfile_name[HTTP_HOST_LEN]="index.html";
charfile_nameforsave[HTTP_HOST_LEN]="index1.html";
FILE*file_web;

if(argc!=2)
{
printf("[Web]input:%shttp://www.test.com[:8080]/index.html",argv[0]);
return-1;
}

http_parse_request_url(argv[1],host,&port,file_name);
WSAStartup(MAKEWORD(2,0),&wsa_data);/*初始化WinSock资源*/

addr=inet_addr(host);
if(addr==INADDR_NONE)
{
host_ent=gethostbyname(host);
if(!host_ent)
{
printf("[Web]invalidhost ");
return-1;
}

memcpy(&addr,host_ent->h_addr_list[0],host_ent->h_length);
}

/*服务器地址*/
serv_addr.sin_family=AF_INET;
serv_addr.sin_port=htons(port);
serv_addr.sin_addr.s_addr=addr;

http_sock=socket(AF_INET,SOCK_STREAM,0);/*创建socket*/
result=connect(http_sock,(structsockaddr*)&serv_addr,sizeof(serv_addr));
if(result==SOCKET_ERROR)/*连接失败*/
{
closesocket(http_sock);
printf("[Web]failtoconnect,error=%d ",WSAGetLastError());
return-1;
}

/*发送HTTP请求*/
send_len=sprintf(data_buf,http_req_hdr_tmpl,argv[1],host,port);
result=send(http_sock,data_buf,send_len,0);
if(result==SOCKET_ERROR)/*发送失败*/
{
printf("[Web]failtosend,error=%d ",WSAGetLastError());
return-1;
}

file_web=fopen(file_nameforsave,"a+");

do/*接收响应并保存到文件中*/
{
result=recv(http_sock,data_buf,HTTP_BUF_SIZE,0);
if(result>0)
{
fwrite(data_buf,1,result,file_web);

/*在屏幕上输出*/
data_buf[result]=0;
printf("%s",data_buf);
}
}while(result>0);

fclose(file_web);
closesocket(http_sock);
WSACleanup();

return0;
}

㈥ linux下C语言怎么读取http文件内容

http是协议
不是文件
你这个说法就有问题了。
如果你想用C读网页 可以考虑使用socket 不过还是有些麻烦的。

㈦ linux怎么抓取http请求

①-安装tcpmp(命令) wireshark(图形化)
②-tcpmp tcp port 80 -n -X -s 0

###在终端输出
③-tcpmp tcp port 80 -n -s 0 -w /tmp/tcp.cap
###通过wireshark进行查看
④-tcpmp tcp port 80 -n -s 0 -X -l |grep xxx
###xxx为 你要过滤的关键字

㈧ c语言实现的http请求中,User-Agent该填什么

User Agent表示的是客户端软件类型,也就是浏览器类型

㈨ 如何用c语言实现http服务器

去看一下《Advanced Linux Programming》这本书吧,第11章讲的就是怎么用C语言实现一Http服务器。 这里有下载地址(英文的): http://www.advancedlinuxprogramming.com/alp-folder 英文看起来不顺的话可以上网找找有没有中文版的这本书,应该叫Linux高级编程吧~~~参考资料: http://www.advancedlinuxprogramming.com/alp-folder

㈩ linux对http请求参数长度限制

没有限制。Linux本身没有对HTTP请求参数长度做出限制,而察李是由Web服务器或应用程序自行设置。具体纤没则来说毁棚,HTTP协议并没有对请求参数长度做出限制,但不同的Web服务器或应用程序可能会有自己的限制。

阅读全文

与linuxc请求http请求相关的资料

热点内容
手机淘宝登录怎么加密码 浏览:481
linux快捷方式图标 浏览:33
阳光车险的app叫什么名字 浏览:461
购买单片机的器件时需要给商家啥 浏览:534
并行编译技术的发展 浏览:547
阿里云服务器安装管理 浏览:548
java手机开发教程 浏览:673
我的世界怎么删除服务器数据 浏览:669
linux内存子系统 浏览:972
加密思维币 浏览:690
魅族访客文件夹 浏览:52
添加的文件夹怎么找 浏览:617
程序员涉黄 浏览:700
maven编译resources下的js 浏览:521
ubuntu文件移动命令 浏览:229
安卓i怎么查找苹果手机 浏览:951
云服务器宕机概率 浏览:232
在线买药用什么app知乎 浏览:815
ubuntu解压xz文件 浏览:676
宏杰加密时电脑关机 浏览:390