社区
Linux/Unix社区
帖子详情
linux下发送http请求
琴乐音
2007-11-14 10:27:45
想在linux下写一个daemon程序,向一个服务器发送请求, 获得服务器的文件, 服务器收到请求后,将文件传过来。
怎么在linux下用c或是其他语言 构造一个http(get)请求呢?
...全文
2161
11
打赏
收藏
linux下发送http请求
想在linux下写一个daemon程序,向一个服务器发送请求, 获得服务器的文件, 服务器收到请求后,将文件传过来。 怎么在linux下用c或是其他语言 构造一个http(get)请求呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
adream99
2007-11-19
打赏
举报
回复
顶
琴乐音
2007-11-19
打赏
举报
回复
lynx 是linux下的浏览器吧, 我是要做个daemon程序的哦。
dinner3000
2007-11-19
打赏
举报
回复
顶楼上的
ckc
2007-11-19
打赏
举报
回复
lynx -source http://服务器的地址
就可以了,不需要编程
fi9
2007-11-19
打赏
举报
回复
就是用recv来进行接收
或者用read也可以
更多的信息可以man recv或者man read
琴乐音
2007-11-16
打赏
举报
回复
上面的问题已经解决了,发送请求和接受200ok响应也可以了。 现在有个问题是, 我想在收到响应时判断响应体是否有数据,服务器传过来的压缩文件, 要怎么做呢? 服务器怎么发不管 , 只管客户端接受的部分,
recv函数可以用在这里么?
最后一起给分,不够再加。
琴乐音
2007-11-15
打赏
举报
回复
多谢上面几位的回复, 了解了大概的思路, 为什么我在linux上的terminal command line 里运行 看不到结果呢?
琴乐音
2007-11-15
打赏
举报
回复
to :
cangwu_lee 兄
试了你的程序, htconnect调用后失败,返回结果为小于1的数, 怎么连接不成功呢, 抓包 好象是DNS解析失败了。 我是用虚拟机运行的linux。
cangwu_lee
2007-11-14
打赏
举报
回复
//將樓上的代碼稍微修改,可以得到網站返回的HTML
//環境 CYGWIN 中。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdarg.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
int htconnect(char *host, int port){
int white_sock;
struct hostent * site;
struct sockaddr_in me;
site = gethostbyname(host);
if (site==NULL) return -2;
white_sock = socket(AF_INET,SOCK_STREAM,0);
if (white_sock <0) return -1;
memset(&me, 0, sizeof(struct sockaddr_in));
memcpy(&me.sin_addr, site-> h_addr_list[0], site-> h_length);
me.sin_family = AF_INET;
me.sin_port = htons(port);
return (connect(white_sock, (struct sockaddr *)&me,sizeof(struct sockaddr)) <0) ? -1 : white_sock;
}
int htsend(int sock, char *fmt, ...){
char BUF[1024];
va_list argptr;
va_start(argptr,fmt);
vsprintf(BUF,fmt,argptr);
va_end(argptr);
printf(BUF);
return send(sock,BUF,strlen(BUF),0);
}
int main(int argc,char **argv){
int black_sock;
char bugs_bunny[3];
if (argc<2){
printf( "Please input the hostName. Example:\n %s www.sohu.com\n ",argv[0]);
return;
}
black_sock = htconnect(argv[1],80);
if (black_sock <1)return;
htsend(black_sock, "GET / HTTP/1.0\n");
htsend(black_sock, "Host: %s\n", argv[1]);
htsend(black_sock, "\n");
//htsend(black_sock, "%c ", 10);
while (read(black_sock, bugs_bunny, 1)> 0)
printf( "%c ",bugs_bunny[0]);
printf( "\n ");
close(black_sock);
}
編譯、執行
gcc -o linux_c_http_get linux_c_http_get.c
./linux_c_http_get www.sohu.com
cceczjxy
2007-11-14
打赏
举报
回复
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdarg.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
int htconnect(char *domain,int port)
{
int white_sock;
struct hostent * site;
struct sockaddr_in me;
site = gethostbyname(domain);
if (site==NULL) return -2;
white_sock = socket(AF_INET,SOCK_STREAM,0);
if (white_sock<0) return -1;
memset(&me,0,sizeof(struct sockaddr_in));
memcpy(&me.sin_addr,site->h_addr_list[0],site->h_length);
me.sin_family = AF_INET;
me.sin_port = htons(port);
return (connect(white_sock,(struct sockaddr *)&me,sizeof(struct sockaddr))<0) ? -1 : white_sock;
}
int htsend(int sock,char *fmt,...)
{
char BUF[1024];
va_list argptr;
va_start(argptr,fmt);
vsprintf(BUF,fmt,argptr);
va_end(argptr);
printf(BUF);
return send(sock,BUF,strlen(BUF),0);
}
int main(int argc,char **argv)
{
int black_sock;
char bugs_bunny[3];
if (argc<2)
{
printf("input your host.example:\n %s www.sohu.com\n",argv[0]);
return;
}
black_sock = htconnect(argv[1],80);
if (black_sock<0) return;
htsend(black_sock,"GET / HTTP/1.0%c",10);
htsend(black_sock,"Host: %s%c",argv[1],10);
htsend(black_sock,"%c",10);
while (read(black_sock,bugs_bunny,1)>0)
printf("%c",bugs_bunny[0]);
printf("\n");
close(black_sock);
}
vigorousfish
2007-11-14
打赏
举报
回复
分析一下HTTP的GET类型消息
将头所需要的每一行信息通过sprintf填充到buf中去,然后通过socket发向服务器.
注意,头当中每一行需要用\r\n来结尾,整个头用\r\n结尾
例如
sprintf(head,"HTTP/1.1 200 OK\r\n""Server: test/1.0\r\n""Date: May,23 06:20:12 2006 GTC\r\n""Content-Type: text/html\r\n""Accept-Ranges: bytes\r\n""Content-Length: 156\r\n""\r\n");
Linux
发送
HTTP请求
本文介绍了在
Linux
下
发送
HTTP请求
的多种方法,包括使用curl、wget、httpie等命令行工具,以及Python等编程语言的库。还阐述了
发送
JSON请求和带认证请求的具体方式,用户可根据自身需求和偏好选择合适的工具和方法。
Linux
QT 4G
发送
HTTP POST请求
发送
JSON格式的数据
本文介绍在
Linux
环境下,使用QT通过4G模块进行HTTP POST请求,
发送
JSON格式数据的方法。在Windows(QT5)和
Linux
上分别进行步骤说明,包括构建URL、请求头,
发送
和解析JSON数据,以及
Linux
下的注意事项,如拨号上网、网络连通性测试等。
linux
发送
http请求
该博客围绕
Linux
系统
发送
HTTP请求
展开,虽内容缺失,但核心明确是关于在
Linux
环境下进行
HTTP请求
操作,这在网络通信、数据交互等信息技术场景中十分重要。
cURL在
Linux
下
发送
HTTP请求
本文介绍了在
Linux
环境下使用cURL
发送
HTTP请求
的方法。cURL是强大的命令行工具,支持多种协议。文中阐述了其基本用法,包括
发送
GET、POST请求,设置请求头,保存响应到文件,处理重定向,以及调试和获取详细信息等,是Web开发和网络测试的利器。
linux
下使用shell
发送
http请求
本文介绍在
Linux
环境下如何使用curl及wget命令
发送
HTTP请求
,包括GET和POST请求,并演示了curl命令的一些常用参数。
Linux/Unix社区
23,223
社区成员
74,536
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章