Linux下用c语言实现发送http请求 方式可以Get或者Post例程参考

[1].[代码] Linux下用c语言实现发送http请求 方式可以Get或者Post 跳至 [1]

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

#include <stdio.h>

#include <sys/socket.h>

#include <sys/types.h>

#include <time.h>

#include <errno.h>

#include <signal.h>

#include <stdlib.h>

#include <string.h>

#include <unistd.h>

#include <sys/wait.h>

#include <sys/time.h>

#include <netinet/in.h>

#include <arpa/inet.h>

#define IPSTR "61.147.124.120"

#define PORT 80

#define BUFSIZE 1024

int main(int argc, char **argv)

{

        int sockfd, ret, i, h;

        struct sockaddr_in servaddr;

        char str1[4096], str2[4096], buf[BUFSIZE], *str;

        socklen_t len;

        fd_set   t_set1;

        struct timeval  tv;

        if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0 ) {

                printf("创建网络连接失败,本线程即将终止---socket error!\n");

                exit(0);

        };

        bzero(&servaddr, sizeof(servaddr));

        servaddr.sin_family = AF_INET;

        servaddr.sin_port = htons(PORT);

        if (inet_pton(AF_INET, IPSTR, &servaddr.sin_addr) <= 0 ){

                printf("创建网络连接失败,本线程即将终止--inet_pton error!\n");

                exit(0);

        };

        if (connect(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr)) < 0){

                printf("连接到服务器失败,connect error!\n");

                exit(0);

        }

        printf("与远端建立了连接\n");

        //发送数据

        memset(str2, 0, 4096);

        strcat(str2, "qqCode=474497857");

        str=(char *)malloc(128);

        len = strlen(str2);

        sprintf(str, "%d", len);

        memset(str1, 0, 4096);

        strcat(str1, "POST /webservices/qqOnlineWebService.asmx/qqCheckOnline HTTP/1.1\n");

        strcat(str1, "Host: www.webxml.com.cn\n");

        strcat(str1, "Content-Type: application/x-www-form-urlencoded\n");

        strcat(str1, "Content-Length: ");

        strcat(str1, str);

        strcat(str1, "\n\n");

        strcat(str1, str2);

        strcat(str1, "\r\n\r\n");

        printf("%s\n",str1);

        ret = write(sockfd,str1,strlen(str1));

        if (ret < 0) {

                printf("发送失败!错误代码是%d,错误信息是‘%s‘\n",errno, strerror(errno));

                exit(0);

        }else{

                printf("消息发送成功,共发送了%d个字节!\n\n", ret);

        }

        FD_ZERO(&t_set1);

        FD_SET(sockfd, &t_set1);

        while(1){

                sleep(2);

                tv.tv_sec= 0;

                tv.tv_usec= 0;

                h= 0;

                printf("--------------->1");

                h= select(sockfd +1, &t_set1, NULL, NULL, &tv);

                printf("--------------->2");

                //if (h == 0) continue;

                if (h < 0) {

                        close(sockfd);

                        printf("在读取数据报文时SELECT检测到异常,该异常导致线程终止!\n");

                        return -1;

                };

                if (h > 0){

                        memset(buf, 0, 4096);

                        i= read(sockfd, buf, 4095);

                        if (i==0){

                                close(sockfd);

                                printf("读取数据报文时发现远端关闭,该线程终止!\n");

                                return -1;

                        }

                        printf("%s\n", buf);

                }

        }

        close(sockfd);

        return 0;

}

原文地址:https://www.cnblogs.com/wdy0505/p/10101613.html

时间: 2024-10-10 23:26:52

Linux下用c语言实现发送http请求 方式可以Get或者Post例程参考的相关文章

linux下的c语言编程删除文件夹

刚刚在学习开始做新项目的时候,学长布置了一项任务,就是在给定一个目录下,要将这个目录下一个星期之前的目录包括里面的文件全部删除,只保留这一个星期内的.百度了好久的资料,终于完成,记录一下防止忘记.(注:文件夹名称默认为日期格式,如20140716) #include<dirent.h> #include<sys/types.h> #include<string.h> #include<stdlib.h> #include<unistd.h> #i

在Linux下开始C语言的学习

为什么要在linux下学习C语言? linux下可以体验到最纯粹的C语言编程,可以抛出其他IDE的影响 环境配置简单,一条命令就足够.甚至对于大多数linux发行版本,都已经不需要配置C语言的环境 查手册方便,在Linux下如果你不清楚一个库函数的用法,直接man,还锻炼英语了.如果想了解man,那就先man man. OK,let's star! 第一步,打开terminal,先输入vi hello.c新建一个c的源文件 接着我们就进入了VIM编辑器,写一段helloworld的代码吧 输入:

一个linux下简单的纯C++实现Http请求类(GET,POST,上传,下载)

目录 一个linux下简单的纯C++实现Http请求类(GET,POST,上传,下载) Http协议简述 HttpRequest类设计 请求部分 接收部分 关于上传和下载 Cpp实现 关于源码中的Logger 使用示例 一个linux下简单的纯C++实现Http请求类(GET,POST,上传,下载) 最近写了点关于Http上传下载文件相关的,于是今天整理下代码. Http协议简述 HttpRequest类设计 使用示例 Http协议简述 协议:网络协议的简称,网络协议是通信计算机双方必须共同遵从

linux下的apache服务自启动的几种方式

1,如果是安装包安装在Linux系统下,那么可以使用 [[email protected] ~]# service httpd restart 从而可以开启或者重启apache服务 与此同时,它的标准方式是: [[email protected] ~]# /etc/rc.d/init.d/httpd start 或者[[email protected] ~]# /etc/rc.d/init.d/httpd stop 或者[[email protected] ~]# /etc/rc.d/init.

在Linux下安装C/C++开发工具包的最佳方式

如果你使用的是Fedora, Red Hat, CentOS, 或者 ScientificLinux 系统,使用下面的命令安装GNU的C/C++开发包和编译器. # yum groupinstall 'Development Tools' 如果你使用的是Debian 或者 UbuntuLinux系统,你可以使用下面的这个命令来安装C/C++编译器. #sudo apt-get update #sudo apt-get install build-essential manpages-dev 在L

Linux下简单C语言小程序的反汇编分析

韩洋原创作品转载请注明出处<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 写在开始,本文为因为参加MOOC相关课程而写的作业,如有疏漏,还请指出. 选了一门Linux内核分析课程,因为阅读内核代码中或多或少要涉及到At&T汇编代码的阅读,所以这里写下一个对一个简单C命令行程序的反汇编分析过程,一方面完成作业,另一方面当作练手.下面开始: 1.编写我们的C语言小程序 这里我们使用简单的例子,代码如下: 1

windows下的c语言和linux 下的c语言以及C标准库和系统API

1.引出我们的问题? 标准c库都是一样的!大家想必都在windows下做过文件编程,在linux下也是一样的函数名,参数都一样.当时就有了疑问,因为我们非常清楚 其本质是不可能一样的,源于这是俩个操作系统啊!但由于c标准库的封装就实现了接口一样.但是如果往深入,我们就非常清楚了在这层封装上还有一层封装其实就是操作系统对文件操作的封装,也就是文件IO.而我们c语言的封装叫标准IO,他们有什么区别那?显然标准iO是基于文件io的,标准IO调用了文件IO,也优化了文件IO,例如引入缓存机制. 2.上面

在Linux下运行C语言程序

市面上常见的Linux都是发行版本,典型的Linux发行版包含了Linux内核.桌面环境和各种常用的必备工具,国内使用较多的是Ubuntu(乌班图).CentOS.Deepin(深度Linux).本教程以Deepin为例来讲述如何编译C程序. Gedit Gedit是一个简单实用的文本编辑器,拥有漂亮的界面,支持语法高亮,比 Vim 更易上手.本教程将Gedit作为C代码编辑器. Gedit的安装: sudo apt-add-repository ppa:ubuntu-on-rails/ppa

初识Linux下的C语言

最近在复习C语言的相关知识,发现自己从来没有在Linux下使用过C语言,因此在慕课网上找到了相关的教程,学习了在Linux环境下运行C程序的基础知识. 记录如下: 首先准备好Linux环境,并安装好Vim编辑器.gcc编译器,使用 apt-get install 命令安装: sudo apt-get install vimsudo apt-get install gcc 在home目录下创建一个用于保存C程序的目录并进入该目录: cd ~mkdir cworkspacecd cworkspace