| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> 网络编程基础 socket编程 第二讲 TCP发送与接收数据,客户端和服务端的构建 -> 正文阅读 |
|
[网络协议]网络编程基础 socket编程 第二讲 TCP发送与接收数据,客户端和服务端的构建 |
第二讲 TCP发送与接收数据一、TCP协议介绍当应用程序希望通过TCP与另一个应用程序通信时,它会发送一个通信请求。这个请求必须被送到一个确切的地址。在双方“握手”之后,TCP将在两个应用程序之间建立一个全双工(full-duplex)的通信。 这个全双工的通信将占用两个计算机之间的通信路线,直到它被一方或双方关闭为止。 1.三次握手下图为初版,四次握手: 进化后成了三次握手,server应答和发送请求可以变成一条: 2. 数据传输以下图为例,TCP协议是一个全双工通信,发送方和接收方建立了信息发送和接收渠道: 3.四次挥手
4.TCP特点
二、UDP协议介绍当应用程序希望通过UDP与一个应用程序通信时,传输数据之前源端和终端不建立连接。 当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。 三、TCP与UDP之间的区别
四、UDP通信
五、TCP通信六、TCP客户端构建流程
我们通过一段简短的代码来看一下。
七、TCP服务端构建流程
八、TCP的相关练习1. 练习1需求:
为了实现需求1,我们可以采用while循环来实现:
但是上述代码仍旧存在一些不足之处,虽然是可以为多个客户端服务,但实际测试当中会有多出阻塞之处,并且需要完成某一客户端的全部服务后才能进入对下一个客户端的服务。 现在我们来看一下需求2。 在研究之前,我们首先要看到前一小节TCP服务端在构建后的一些服务局限性。 我们上一节构建的TCP服务端所能够提供的服务就是发送和接收消息,当使用模拟的网络助手(作为TCP客户端)建立起链接并完成一次服务后,会自动将该TCP客户端纳入等待序列(不是断开连接),因而无法进行多次服务。 为了解决这个问题,我们同样要使用while循环:
上述代码有一些缺陷,比如如何在0客户端的时候跳出循环,还不知道怎么做;另外一个就是当前代码只允许为一个客户端服务多次,不能同时对多个客户端服务多次,这牵扯到之后的多线程学习。 2. 练习2 文件下载器需求如下图所示: 我们首先看一下客户端的代码:
接下来构建服务端代码:
|
|
网络协议 最新文章 |
使用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 17:30:17- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |