C++socket网络编程(跨平台)实战HTTP服务器(一)

简介:

        网络编程

Socket是跨平台的在Window和Linux基本通用,无论是,java php都是需要网络的,网络编程是每个程序员都需要掌握的,他并不复杂。复杂的地方是对整个协议的理解,还有网络通信的理解。

这个博客是对整个网络编程中最,学习的目的:

{能够熟悉windows和linux下的开发流程,能够开发出支持跨平台的多线程的网络程序。理解socket编程原理,理解udp和tcp的协议,并能通过抓包工具分析协议,通过本课程的学习能够开发出支持高并发的网络服务端,通过开发支持php的http服务器和syslog服务器能够将网络编程投入实战应用。掌握c++11的线程库和正则表达式库。}.


使用语音是:C/C++,因为他高性能,对高并发的处理很好.

最终可以带大家实战一个支持PHP脚本的http服务器。

需要注意的是Socket库不等同于TCP/UDP编程,因为他还可以开发其他

的一些协议。

交流群:140066160


进入正题:(先讲理论,在实战)


               1TCPIP协议分层讲解


学习网络编程,他说基于什么协议之上的。不是会用几个函数就可以了,那么TCP/IP是基于什么协议呢?

我们对网络编程不能停留在仅仅会用Socket把两个程序调通了,互相发送协议。你要明白整个协议的过程,为了实践当中解决

问题,碰到网络问题你知道是什么原因。


wKiom1loKDST3w_GAAE-Dm7Nn80587.png-wh_50


看TCP/TP四层协议,我看到我们程序人员其实只要用到

这四层,OSI模型中。


1.网络介质层

物理层和数据链路层对应的是“网络介质层”,

每一层都是为了解决一个问题,他是解决一个硬件设备和另一个硬件设备在物理上怎么进行通信。通信得知道地址,所以“网络介质层”会最终封装出一个“MAC”地址,就是硬件的地址,来进行通信.


2 IP层

这一层,上面已经实现了一个设备到另一个设备物理上的连接,但是,我们需要的是真正接收的这个数据呢, 这个时候就需要确定是由谁来接收。那我们通过IP层给每个设备封装一个IP地址。

然后由交换机来进行分配,在这层程序成员需要做的是:IP地址建立连接,目前IP地址都是基于IPV4是4个字节的IP地址。这个网络层只需要知道IP对IP地址



     


    协议的目的是什么?协议是怎么实现的?

wKiom1loLyuRrQHIAACojYNXkKM331.png-wh_50

        

非常简单,原理也非常简单,我们就是在用户发送的数据加一层头,最后接收端在通过解包一层一层去掉。



为了深刻理解上面的图,我们下载一个抓包软件来看看,Wireshark,可以百度直接就可以下载,抓HTTP的协议看看

wKiom1loMerC7R5xAAJuYsmdR0Q902.png-wh_50

wKiom1loMimCYFUxAAAW9-2Xzv0413.png-wh_50

   随便抓到一个整包(Get的)

wKioL1loMoyClzdJAAHqh8N4IRg329.png-wh_50


先看下分析的内容

1  frame 最底层的帧数据,也就是说把TCP分层他会把数据

切包,切成一帧一帧的,

wKiom1loM2Ly6UvEAACGu3cijA4637.png-wh_50

 

2 Ethernet II 他对应的是链路层的MAC的地址,目标,源地址

wKioL1loM-Pz7mQDAAA9FpQyps4030.png-wh_50


3 Internet Protocol,这个就是上面讲的IP层,这里有目标ID

来源IP等信息,


wKioL1loNKyz4h1fAABQrTI_2FM626.png-wh_50



4 Transmission 传输层,端口号,原端口号,目标端口,


wKiom1loNSDjQziDAABbZZauXys958.png-wh_50



5 Hypertext Transfer Protocol应用层,图片中是

Http协议会发送一个Get请求过去


wKiom1loNXexCQqOAABI7D8MQg4324.png-wh_50

 

需要搞跨平台,需要用到Linux 。ubuntu 16.04 .先到这





 本文转自超级极客51CTO博客,原文链接:http://blog.51cto.com/12158490/1947450,如需转载请自行联系原作者






相关文章
|
7天前
|
缓存 负载均衡 监控
HTTP代理服务器在网络安全中的重要性
随着科技和互联网的发展,HTTP代理IP中的代理服务器在企业业务中扮演重要角色。其主要作用包括:保护用户信息、访问控制、缓存内容、负载均衡、日志记录和协议转换,从而在网络管理、性能优化和安全性方面发挥关键作用。
26 2
|
1月前
|
网络协议 物联网 API
Python网络编程:Twisted框架的异步IO处理与实战
【10月更文挑战第26天】Python 是一门功能强大且易于学习的编程语言,Twisted 框架以其事件驱动和异步IO处理能力,在网络编程领域独树一帜。本文深入探讨 Twisted 的异步IO机制,并通过实战示例展示其强大功能。示例包括创建简单HTTP服务器,展示如何高效处理大量并发连接。
53 1
|
2月前
使用Netty实现文件传输的HTTP服务器和客户端
本文通过详细的代码示例,展示了如何使用Netty框架实现一个文件传输的HTTP服务器和客户端,包括服务端的文件处理和客户端的文件请求与接收。
81 1
使用Netty实现文件传输的HTTP服务器和客户端
|
1月前
|
存储 Oracle 关系型数据库
oracle服务器存储过程中调用http
通过配置权限、创建和调用存储过程,您可以在Oracle数据库中使用UTL_HTTP包发起HTTP请求。这使得Oracle存储过程可以与外部HTTP服务进行交互,从而实现更复杂的数据处理和集成。在实际应用中,根据具体需求调整请求类型和错误处理逻辑,以确保系统的稳定性和可靠性。
67 0
|
1月前
|
网络协议 调度 开发者
Python网络编程:Twisted框架的异步IO处理与实战
【10月更文挑战第27天】本文介绍了Python网络编程中的Twisted框架,重点讲解了其异步IO处理机制。通过反应器模式,Twisted能够在单线程中高效处理多个网络连接。文章提供了两个实战示例:一个简单的Echo服务器和一个HTTP服务器,展示了Twisted的强大功能和灵活性。
47 0
|
2月前
|
Linux C语言 C++
vsCode远程执行c和c++代码并操控linux服务器完整教程
这篇文章提供了一个完整的教程,介绍如何在Visual Studio Code中配置和使用插件来远程执行C和C++代码,并操控Linux服务器,包括安装VSCode、安装插件、配置插件、配置编译工具、升级glibc和编写代码进行调试的步骤。
386 0
vsCode远程执行c和c++代码并操控linux服务器完整教程
|
2月前
|
Linux 开发工具 C语言
【c++】c++发送http请求
【c++】c++发送http请求
|
2月前
|
存储 监控 NoSQL
Redis的实现二: c、c++的网络通信编程技术,让服务器处理多个client
本文讨论了在C/C++中实现服务器处理多个客户端的技术,重点介绍了事件循环和非阻塞IO的概念,以及如何在Linux上使用epoll来高效地监控和管理多个文件描述符。
38 0
|
9天前
|
SQL 安全 网络安全
网络安全与信息安全:知识分享####
【10月更文挑战第21天】 随着数字化时代的快速发展,网络安全和信息安全已成为个人和企业不可忽视的关键问题。本文将探讨网络安全漏洞、加密技术以及安全意识的重要性,并提供一些实用的建议,帮助读者提高自身的网络安全防护能力。 ####
47 17
|
20天前
|
存储 SQL 安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将介绍网络安全的重要性,分析常见的网络安全漏洞及其危害,探讨加密技术在保障网络安全中的作用,并强调提高安全意识的必要性。通过本文的学习,读者将了解网络安全的基本概念和应对策略,提升个人和组织的网络安全防护能力。