IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 【计算机网络】二应用层补充--套接字编程 -> 正文阅读

[网络协议]【计算机网络】二应用层补充--套接字编程

套接字编程

典型的网络应用是一对应用程序,也就是一个客户程序和一个服务器程序组成的,而运行在不同机器上的进程是彼此通过套接字来发送报文实现通信的。那么UDP和TCP的主要区别就是UDP是无连接的,而TCP是面向连接的。这就体现在在将分组放进套接字之前是否需要绑定上对应的地址。

UDP编程

UDP是无连接的,并且在客户发送数据之前,服务器要已经是运行状态。
其中端口号可以在主机上的众多应用程序中进行确定。
UDP

1、客户端

如下图是UDP的客户端编程。引入socket模块,可以实现在python中的所有网络通信的基础,这样的话,文末下面才可以进行套接字的创建。
severName和serverPort分别是所要发送的服务器的主机名和端口号。
之后进行套接字的创建:clientSocket=socket(AF_INET,SOCK_DGRAM),其中,AF_INET表明使用的是ipv4,而SOCK_DGRAM则说明使用的是UDP。
message是要发送的数据,这里是进行输入提示之后等待用户进行输入。
接着clientSocket.sendto()函数则是开始进行数据的发送。因为UDP是无连接的,所以在将分组放进套接字时候需要把地址也带进去。这是和TCP套接字编程的最大区别。
使用clientSocket.recvfrom()是用来获取服务器发送的分组数据以及服务器的地址(也有端口),但是实际上服务器的地址在一开始就已经被客户所知道了。
获取到返回数据之后,就可以进行输出了。在全部完成之后,就可以关闭套接字了,也就是可以关闭进程来。
UDPClient

2、服务器端

如下图是UDP的服务器相关编程。
serverSocket.bind()是将端口号与服务器绑定起来。这在TCP的服务器里面也有进行。
while True是确保服务器可以一直开机,进行服务。
其中的serverSocket.recvfrom()跟客户编程里面的很类似,这里是用来获取客户所发送的数据以及客户的地址,便于之后进行数据的传送。
serverSocket.sendto()个前面类似的是,我们仍然需要将地址和数据封装发送。
UDPServer

TCP编程

TCP是面向连接的,其特点是在进行传送之前是需要进行三次握手的。但是三次握手所用的套接字和后续真正传送数据所用的套接字不是同一个套接字。同样地,在整个过程中,服务器要先确保是一直“开机”状态。
TCP

1、客户端

如下图是TCP中的客户程序的相关编程。
模块的引用以及包含服务器的主机名和地址和UDP中的是一样的。
clientSocket=socket(AF_INET,SOCK_STREAM)与UDP中的类似,虽然都是进行套接字的创建,但是这里,AF_INET仍然表示使用的是IPV4,但是SOCK_STREAM则表示使用的是TCP,可靠的字节流传输。
下面的clientSocket.connect()就是进行的握手阶段,需要客户程序和服务器进行握手。
这里的sentence仍然是数据部分,等待用户进行输入。
TCP的发送部分,clientSocket.send(),就不需要将分组和地址封装起来一起发送,因为已经建立了连接。所以只需要将数据进行发送就可以实现成功的发送。
clientSocket.recv()类似一个缓冲,当收到回车字符的时候才会结束这一行。
最后就是关闭套接字,关闭进程。
TCPClient

2、服务器端

如下图是TCP中的服务器程序相关编程。
serverSocket.bind()仍然是进行服务器和端口的绑定。
serverSocket.listen()表示让服务器聆听来自客户的TCP连接请求。这里的1定义了请求连接的最大参数,通过这个也可以实现多进程。
while True也是保证服务器的一直开机状态。通过serverSocket.accept获取客户发来的数据以及其地址。
获取到的数据进行后续的大小写转换,之后再进行发送,最后就可以关闭套接字,关闭进程了。
TCPServer

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-12-07 12:22:55  更:2021-12-07 12:23:18 
 
开发: 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年7日历 -2024/7/8 9:40:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码