linux socket编程web服务器实现报文解析,[Socket][网络编程]程序范例:Linux下连接WEB服务器...
昨天试着在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服务器...相关推荐
- Linux高并发服务器开发---笔记4(网络编程)
0705 第4章 项目制作与技能提升 4.0 视频课链接 4.1 项目介绍与环境搭建 4.2 Linux系统编程1.4.3 Linux系统编程2 4.4 多进程 1-9 10.进程间通信☆☆☆ 4.5 ...
- ☀️苏州程序大白用万字解析Python网络编程与Web编程☀️《❤️记得收藏❤️》
☀️苏州程序大白用万字解析Python网络编程☀️<❤️记得收藏❤️> 目录
- 服务器系统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 ...
- python的基础网络编程是下列_Python入门基础之网络编程、socket编程、TCP、UDP编程...
忙了两天,继续更文!希望多多支持. 套接字 套接字是一种具有之前所说的"通讯端点"概念的计算机网络数据结构.网络化的应用程序在开始任何通讯之前都必需要创建套接字. 套接字有三种: ...
- Linux下连接Mysql服务器的方式
一:mysql连接简介 1.linux下mysql的连接方式有三种: 本地mysql命令连接 客户端命令连接 脚本语言封装方法连接 2.linux下mysql的连接方法有两种: TCP/IP协议连接 ...
- 编写tcp服务器发送hex格式_Android网络编程-TCP/IP协议
在Android网络编程-计算机网络基础一文中得知,IP协议属于网络层,TCP.UDP协议属于传输层. IP协议是TCP/IP协议族的动力,它为上层协议提供无状态.无连接.不可靠的服务. TCP协议是 ...
- 客户和服务器之间响应的序列,网络编程-第五讲-TCP客户-服务器程序例子.pdf-原创力文档...
网络编程 第五讲TCP客户-服务器程序例子 多进程并发服务器基本架构 pid_t pid; int listenfd, connfd; listenfd = Socket( ... ); /* fil ...
- pythontcp服务器如何关闭阻塞_python 网络编程(socketserver,阻塞,其他方法)
重点回顾: (重点)粘包 : 就是因为接收端不知道如何接收数据,造成接收数据的混乱的问题 只发生在tcp协议上. 因为tcp协议的特点是面向数据流形式的传输 粘包的发生主要是因为tcp协议有两个机制: ...
- 在linux中连接mysql数据库服务器_Linux下连接Mysql服务器的方式
一:mysql连接简介 1.linux下mysql的连接方式有三种: 本地mysql命令连接 客户端命令连接 脚本语言封装方法连接 2.linux下mysql的连接方法有两种: TCP/IP协议连接 ...
最新文章
- dora storm 文本_牛津版英语七年级下册课文文本.doc
- JavaScript中创建对象的方法
- C#开发笔记之11-如何用C#过滤连续相同的字符串?
- 《开源框架那点事儿33》极限挑战:用一条循环语句正确输出99表!【前两名奖图书一本】...
- 监控linux内存,系统运维|用 Bash 脚本监控 Linux 上的内存使用情况
- IntelliJ IDEA使用技巧(五)——页面乱码和控制台乱码
- 白盒测试哪种测试效果好_白盒测试与黑盒测试区别(简答题)简短一些不要长的谢谢...
- 化工人员定位安全管理系统解决方案
- SameSite 属性
- used in key specification without a key length
- 在SATA SSD + NVMe SSD双硬盘中安装ubuntu双系统
- 定积分的基本性质2 乘积可积性
- Elasticsearch Guide[7.15]翻译 Aliases
- Zookeeper和Kafka环境搭建总结
- 2017全球ROI Top25游戏广告平台排行榜
- 【无标题】Hadoop HA文件参数配置和HA启动
- QNAP威联通NAS搭建SFTP服务,并内网穿透实现公网远程访问
- 使用Spring获取JavaBean的属性值匹配短信模板
- 3 海康视觉平台VisionMaster 上手系列:通讯
- 反编译工具jad使用方法
热门文章
- 第四十三篇 面向对象进阶2
- 配置数据库连接池的时候。
- eclipse自动补全设置
- 推荐一个很好的富文本web编辑器UEditor
- Linux的watch命令 -- 实时监测命令的运行结果
- 为防盗装自动门 不想也会影响生活
- python的作用域分别有几种_python 作用域知识点整理
- 从零开始学前端:弹性盒模型(flex布局) --- 今天你学习了吗?(CSS:Day19)
- 电脑音响怎么插_BMW宝马5系G38改原厂全套哈曼卡顿音响+无钥匙进入,厚街宝马原厂改装中心...
- Python使用matplotlib绘制三维曲线