socket实现最最最简单的http请求的数据
来源:互联网 发布:陕西天互数据 编辑:程序博客网 时间:2024/05/22 16:24
/* For sockaddr_in */#include <netinet/in.h>/* For socket functions */#include <sys/socket.h>/* For gethostbyname */#include <netdb.h>#include <unistd.h>#include <string.h>#include <stdlib.h>#include <stdio.h>int main(int argc, char *argv[]){if(argc != 2){printf("parameter error!\n");return -1;}char query[1024];memset(query, 0x00,sizeof(query));snprintf(query, sizeof(query), "GET / HTTP/1.0\r\n""%s\r\n""\r\n",argv[1]);printf("query = %s\n",query);char hostname[128];memset(hostname, 0x00,sizeof(hostname));strcpy(hostname, argv[1]);struct sockaddr_in sin;struct hostent *h;const char *cp;int fd;ssize_t n_written, remaining;char buf[1024];/* Look up the IP address for the hostname. Watch out; this isn't threadsafe on most platforms. */h = gethostbyname(hostname);if (!h) {fprintf(stderr, "Couldn't lookup %s: %s", hostname, hstrerror(h_errno));return 1;}if (h->h_addrtype != AF_INET) {fprintf(stderr, "No ipv6 support, sorry.");return 1;} /* Write the query. *//* XXX Can send succeed partially? */cp = query;remaining = strlen(query);fd = socket(AF_INET,SOCK_STREAM,0);struct sockaddr_in srvaddr;srvaddr.sin_family = AF_INET;srvaddr.sin_port = htons(80);char ip[128];memset(ip, 0x00,sizeof(ip));inet_ntop(h->h_addrtype, *(h->h_addr_list), ip, sizeof(ip));printf("ip = %s\n",ip);srvaddr.sin_addr.s_addr = inet_addr(ip); //srvaddr.sin_addr = *(struct in_addr*)h->h_addr;if (connect(fd, (struct sockaddr*) (&srvaddr), sizeof(srvaddr)) < 0) {perror("fun socket:");exit(0);}while (remaining) { n_written = send(fd, cp, remaining, 0); if (n_written <= 0) {perror("send");return 1; } remaining -= n_written; cp += n_written;}/* Get an answer back. */while (1) {ssize_t result = recv(fd, buf, sizeof(buf), 0);if (result == 0) {break;} else if (result < 0) {perror("recv");close(fd);return 1;}fwrite(buf, 1, result, stdout);}close(fd);return 0;}
0 0
- socket实现最最最简单的http请求的数据
- 最最最简单的C++缓存实现
- 最最最简单的分页
- 最最最简单的计算器
- XUtils3框架最最最简单的使用
- Android 最最最简单的浏览器代码
- 最最最简单的URL聚类
- 简单的Socket实现HTTP
- 用PHP的Socket实现HTTP请求
- 实现一个最最简单的COM组件
- 最最最最简单的Linux后门~~, HOHOHO~~
- Unity3d Action的最最最简单的使用
- 最最最简单的C#入门!!!(一)工欲善其事,必先利其器!
- 史上最最最简单的MVP教程
- java实现http请求和响应的最简单的方式
- python socket 实现的简单http服务器
- python socket 实现的简单http服务器
- java最简单的方式实现http get请求 gbk转utf8 javaweb发布到服务器
- 【Hibernate总结系列】hibernate.cfg.xml配置
- 7.Ubuntu16.04Docker获取和推送镜像
- shell脚本语言
- 1613-3-傅溥衍 总结《2016年12月3日》【连续第六十四天总结】
- 如何启用vim自带python自动补全功能
- socket实现最最最简单的http请求的数据
- 8.Ubuntu16.04构建docker镜像
- 2.1 docker 启动容器的时候可以使用的一些选项 和配置
- 栈的运用
- 9.Ubuntu16.04Docker的CS模式
- Qt实现两个非模态窗口的数据传递(信号与槽方式)
- 前馈神经网路的权值初始化方法
- 10.Ubuntu16.04守护进程的配置和操作
- C多线程练习题