| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> C++网络编程 -> 正文阅读 |
|
[网络协议]C++网络编程 |
?? ?TCP协议 ????????TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议,而与TCP相对应的UDP协议则是无连接的、不可靠的协议(但传输效率比TCP高)。 ????????在TCP/IP协议中,TCP协议提供可靠的连接服务,连接是通过三次握手进行初始化的:首先A发送信息给B,B在收到A的信息后给A发信息告诉A自己已经收到了信息,A收到信息后再给B发信息告诉B他已经知道B收到消息了。 ? ? ? ? TCP通过四次挥手来确保双端都断开了联系: ? ? ? ? ????????1. A先向B发送一个终止的信号并且进入状态1。 ? ? ? ????????? 2.B收到A的终止信号后向A发一个信号表明自己已经收到了终止信号,收到B发出的信号的A进入状态2。 ? ? ? ? ????????3.在B把数据传输完以后向A发送一个终止信号,请求关闭连接。 ? ? ? ????????? 4.A在收到B的终止信号后向B发一个信号告诉B可以关机了,然后A等一段时间后关闭链接(处理B重发的数据),B在收到A的可以关闭连接的信号后,关闭连接。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??????????????Socket通信的基本流程? 1.Socket函数 ? ? ? ? socket函数用于创建一个新的socket,socket函数用于客户端和服务器,单个程序最多可以打开1023个socket。 ? ? ? ? 函数定义:
? ? ? ? ipv4是由四个字节组成,格式:xxx.xxx.xxx.xxx(0<x<255)每个x都是十进制数 ? ? ? ? ipv4?由16个字节组成,格式:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx每个x都是16进制的数 用法如下所示:?
2.主机字节序和网络字节序 ? ? ? ? 字节顺序是指占内存多于一位的字节类型的数据在内存中存放的顺序,一个32位整数由4个字节组成。储存这些字节有两个方法:?大端存储和小端存储。大端存储是指将高字节数据存储在起始地址,小端存储是将低字节数据储存到起始地址,如数据ox123456789
????????网络字节序是由TCP/IP中规定的一种数据表达格式,主机字节序是由CPU决定的。一般网络字节序是大端存储,主机字节序是小端存储,需要使用htons()函数进行转换。
3.sokcet中的结构体 ?????????
4.inet_ntoa函数? ????????inet_ntoa函数将 (Ipv4) 因特网网络地址转换为因特网标准点分十进制格式的 ASCII 字符串。?
????????如果未发生错误,inet_ntoa将返回一个指向静态缓冲区的字符指针,该缓冲区包含标准 “.'” 表示法中的文本地址。否则,它将返回?NULL。 5.bind函数 ? ? ? ? bind函数将本地地址与套接字相关联。
6.设置服务端socket的SO_REUSEADDR属性
7.listen()、connect()、和accept()函数 ? ? ? ? (1)服务端在调用listen()之前,客户端不能向服务端发起连接请求的。 ? ? ? ? (2)服务端调用listen()函数后,服务端的socket开始监听客户端的连接。 ????????(3)客户端调用connect()函数向服务端发起连接请求。 ? ? ? ? (4)在TCP底层,客户端和服务端握手后建立起通信通道,如果有多个客户端请求,在服务端就会形成一个已准备好的连接的队列(三次握手)。 ? ? ? ? (5)服务端调用accept()函数从队列中获取一个已准备好的连接,函数返回一个新的socket, 新的socket用于与客户端通信,listen的socket只负责监听客户端的连接请求。 |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 22:51:49- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |