昨天试着在Ubuntu 下用C语言写了一个客户端,用来向WEB服务器上交请求并取回响应报文。

同时,这也是一个通用的基于IPv4的客户端程序例程。

[cpp]

/* socket test on linux main file.

*

* Author: Lesca

* License: GPL

*

*/

#include

#include

#include

#include

#include

#include

#include

#include

int main()

{

int socketfd;

int len;

struct sockaddr_in address;

int result;

const char request[] = "GET / HTTP/1.1\r\nHost: api\r\nConnection: close\r\n\r\n";

char buf;

// 定义套接字类型并命名套接字

socketfd = socket(AF_INET, SOCK_STREAM, 0);

perror("socketfd");

address.sin_family = AF_INET;

address.sin_addr.s_addr = inet_addr("127.0.0.1");

address.sin_port = htons(80);// 将短整型转为网络字节序

len = sizeof(address);

// 将这个套接字连接到服务器

result = connect(socketfd, (struct sockaddr *)&address, len);

if(result == -1) {

perror("oops: client1");

exit(1);

}

perror("connect");

// Linux中套接字的读写和文件没有区别(真是方便那!!)

write(socketfd, request, strlen(request));

perror("write");

while(read(socketfd, &buf, 1))

{

putchar(buf);

}

// 关闭套接字

close(socketfd);

exit(0);

}

[/cpp]

HTTP请求报文

GET / HTTP/1.1

Host: api// 这是笔者机器上的一个虚拟主机的名字

Connection: close

HTTP应答报文

[html]

HTTP/1.1 200 OK

Date: Tue, 01 Mar 2011 08:45:42 GMT

Server: Apache/2.2.14 (Ubuntu)

Last-Modified: Mon, 21 Feb 2011 05:31:27 GMT

ETag: "58d054-1b9-49cc42cdc49c0"

Accept-Ranges: bytes

Content-Length: 441

Vary: Accept-Encoding

Connection: close

Content-Type: text/html

Lesca’s References, documentations, specifications and APIs

Your broswer doesn’t support frames

[/html]

References:

[1] Neil Matthew, Richard Stones – Beginning Linux Programming 4th Edition

linux socket编程web服务器实现报文解析,[Socket][网络编程]程序范例:Linux下连接WEB服务器...相关推荐

  1. Linux高并发服务器开发---笔记4(网络编程)

    0705 第4章 项目制作与技能提升 4.0 视频课链接 4.1 项目介绍与环境搭建 4.2 Linux系统编程1.4.3 Linux系统编程2 4.4 多进程 1-9 10.进程间通信☆☆☆ 4.5 ...

  2. ☀️苏州程序大白用万字解析Python网络编程与Web编程☀️《❤️记得收藏❤️》

    ☀️苏州程序大白用万字解析Python网络编程☀️<❤️记得收藏❤️> 目录

  3. 服务器系统centos7 x64位,在Centos7.2(64位)下搭建Web服务器

    一:通过Yum安装mysql 1 # wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm 2 # rpm -i ...

  4. python的基础网络编程是下列_Python入门基础之网络编程、socket编程、TCP、UDP编程...

    忙了两天,继续更文!希望多多支持. 套接字 套接字是一种具有之前所说的"通讯端点"概念的计算机网络数据结构.网络化的应用程序在开始任何通讯之前都必需要创建套接字. 套接字有三种: ...

  5. Linux下连接Mysql服务器的方式

    一:mysql连接简介 1.linux下mysql的连接方式有三种: 本地mysql命令连接 客户端命令连接 脚本语言封装方法连接 2.linux下mysql的连接方法有两种: TCP/IP协议连接 ...

  6. 编写tcp服务器发送hex格式_Android网络编程-TCP/IP协议

    在Android网络编程-计算机网络基础一文中得知,IP协议属于网络层,TCP.UDP协议属于传输层. IP协议是TCP/IP协议族的动力,它为上层协议提供无状态.无连接.不可靠的服务. TCP协议是 ...

  7. 客户和服务器之间响应的序列,网络编程-第五讲-TCP客户-服务器程序例子.pdf-原创力文档...

    网络编程 第五讲TCP客户-服务器程序例子 多进程并发服务器基本架构 pid_t pid; int listenfd, connfd; listenfd = Socket( ... ); /* fil ...

  8. pythontcp服务器如何关闭阻塞_python 网络编程(socketserver,阻塞,其他方法)

    重点回顾: (重点)粘包 : 就是因为接收端不知道如何接收数据,造成接收数据的混乱的问题 只发生在tcp协议上. 因为tcp协议的特点是面向数据流形式的传输 粘包的发生主要是因为tcp协议有两个机制: ...

  9. 在linux中连接mysql数据库服务器_Linux下连接Mysql服务器的方式

    一:mysql连接简介 1.linux下mysql的连接方式有三种: 本地mysql命令连接 客户端命令连接 脚本语言封装方法连接 2.linux下mysql的连接方法有两种: TCP/IP协议连接 ...

最新文章

  1. dora storm 文本_牛津版英语七年级下册课文文本.doc
  2. JavaScript中创建对象的方法
  3. C#开发笔记之11-如何用C#过滤连续相同的字符串?
  4. 《开源框架那点事儿33》极限挑战:用一条循环语句正确输出99表!【前两名奖图书一本】...
  5. 监控linux内存,系统运维|用 Bash 脚本监控 Linux 上的内存使用情况
  6. IntelliJ IDEA使用技巧(五)——页面乱码和控制台乱码
  7. 白盒测试哪种测试效果好_白盒测试与黑盒测试区别(简答题)简短一些不要长的谢谢...
  8. 化工人员定位安全管理系统解决方案
  9. SameSite 属性
  10. used in key specification without a key length
  11. 在SATA SSD + NVMe SSD双硬盘中安装ubuntu双系统
  12. 定积分的基本性质2 乘积可积性
  13. Elasticsearch Guide[7.15]翻译 Aliases
  14. Zookeeper和Kafka环境搭建总结
  15. 2017全球ROI Top25游戏广告平台排行榜
  16. 【无标题】Hadoop HA文件参数配置和HA启动
  17. QNAP威联通NAS搭建SFTP服务,并内网穿透实现公网远程访问
  18. 使用Spring获取JavaBean的属性值匹配短信模板
  19. 3 海康视觉平台VisionMaster 上手系列:通讯
  20. 反编译工具jad使用方法

热门文章

  1. 第四十三篇 面向对象进阶2
  2. 配置数据库连接池的时候。
  3. eclipse自动补全设置
  4. 推荐一个很好的富文本web编辑器UEditor
  5. Linux的watch命令 -- 实时监测命令的运行结果
  6. 为防盗装自动门 不想也会影响生活
  7. python的作用域分别有几种_python 作用域知识点整理
  8. 从零开始学前端:弹性盒模型(flex布局) --- 今天你学习了吗?(CSS:Day19)
  9. 电脑音响怎么插_BMW宝马5系G38改原厂全套哈曼卡顿音响+无钥匙进入,厚街宝马原厂改装中心...
  10. Python使用matplotlib绘制三维曲线