【无标题】

2023-09-18 23:39:02

TCP

简单的TCP协议的Python实现,包括服务器和客户端

服务器端

import socket

# 定义服务器地址和端口号
server_address = ('localhost', 8000)

# 创建TCP套接字
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 绑定服务器地址和端口号
server_socket.bind(server_address)

# 监听连接
server_socket.listen(1)

print('等待客户端连接...')

# 接受客户端连接
client_socket, client_address = server_socket.accept()
print(f'客户端 {client_address} 已连接!')

# 接收客户端数据
while True:
    data = client_socket.recv(1024).decode('utf-8')
    if not data:
        break
    print(f'收到来自客户端 {client_address} 的数据: {data}')

# 关闭连接
client_socket.close()
server_socket.close()

客户端 


import socket

# 定义服务器地址和端口号
server_address = ('localhost', 8000)

# 创建TCP套接字
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 连接服务器
client_socket.connect(server_address)

# 发送数据
for i in range(10):
    client_socket.send(f'消息 {i}\n'.encode('utf-8'))

# 关闭连接
client_socket.close()

在这个简单的示例中,服务器监听来自客户端的连接,并接收和打印客户端发送的消息。客户端连接到服务器,并发送10条消息到服务器

 

TCP和UDP对应的协议分别是FTP、SMTP、POP3、HTTP和DNS、SNMP、TFTP、UDP。
TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议,在网络通信中是可靠的传输方式,传输前会进行连接确认,确保数据传输的准确性和顺序。
UDP是面向无连接的不可靠传输层通信协议,在网络通信中是简单的传输方式,不需要进行连接确认,因此可能会出现数据丢失或接收错误等问题。

UDP

以下是一个简单的Python UDP协议示例:
 

import socket

# 创建UDP套接字
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# 绑定本地IP和端口号
sock.bind(('localhost', 8000))

# 接收数据
while True:
    data, addr = sock.recvfrom(1024)
    print('收到来自 %s 的数据: %s' % addr, data.decode('utf-8'))

这个示例中,我们首先使用socket模块创建了一个UDP套接字,并通过bind方法绑定了本地IP和端口号。然后通过recvfrom方法不断接收来自客户端的数据,并打印出来。这里的协议比较简单,只是简单地接收数据并打印,你可以根据实际需求来扩展它。

客户端实现

import socket

# 创建UDP套接字
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# 定义服务器地址和端口号
server_address = ('localhost', 8000)

# 发送数据
message = 'Hello, UDP server!'
sock.sendto(message.encode('utf-8'), server_address)

# 接收响应
data, server = sock.recvfrom(1024)
print('收到来自 %s 的响应: %s' % server, data.decode('utf-8'))

# 关闭套接字
sock.close()

OSI 七层

OCI七层指的是物理层、数据链路层、网络层、传输层、会话层、表示层、应用层:

物理层:主要定义物理设备标准,如网线的接口类型、网卡的物理接口、传输的速率等。
数据链路层:主要将原始数据封装成数据帧,然后实现网络连接之间的通信。
网络层:主要将数据帧发送到目标主机,然后完成通信。
传输层:主要负责数据的传输,提供端到端的服务,如TCP协议。
会话层:主要负责建立和维护通信的会话连接。
表示层:主要负责转换数据的格式,以支持不同的应用。
应用层:主要负责处理用户的应用请求,并为用户提供网络服务。

不同的协议栈各层协议并不完全相同,比如在TCP/IP协议中:

网络接口层:规定了如何在物理网络媒介上传输数据,如以太网、Wi-Fi等。
网络层:定义了数据在网络上的传输和路由方式,主要协议有Internet协议(IP),负责将数据包从源主机发送到目标主机,还有Internet控制报文协议(ICMP)、互联网组管理协议(IGMP)等。
传输层:提供了应用程序之间的端到端通信服务,确保数据可靠、完整地从源主机传输到目标主机,最常用的传输层协议是传输控制协议(TCP)和用户数据报协议(UDP)。
应用层:包含了各种应用程序和协议,用于实现特定的网络功能和服务,例如,超文本传输协议(HTTP)、文件传输协议(FTP)、域名系统(DNS)等。

 

更多推荐

window.parent.postMessage-不用考虑跨域的父子页面通讯

本人使用情景A项目使用iframe内嵌了一个B项目的几个页面,A和B都是vue2项目,A和B是父子内嵌关系,A和B会有端口不同的情况,所有沟通起来会有跨域问题(前-后端,A前端页面-B前端页面),采用window.parent.postMessage方法主要解决的是A前端-B前端页面的问题,B页面token丢失时,要求

QT---day2---9.18

完善登录框点击登录按钮后,判断账号(admin)和密码(123456)是否一致,如果匹配失败,则弹出错误对话框,文本内容“账号密码不匹配,是否重新登录”,给定两个按钮ok和cancel,点击ok后,会清除密码框中的内容,继续进行登录;如果点击cancel按钮,则关闭界面。如果账号和密码匹配,则弹出信息对话框,给出提示信

华为高斯数据库配置环境变量(DWS,高斯数据库,libra) 报错:sh: gsql: command not found

在进行高斯数据库相关的迁移时提示错误(gsql:commandnotfound)1:根据日志分析缺少高斯数据库客户端,需要对安装客户端。2:需要和客户获取客户端安装包,我这里拿到的版本是这样的3:将安装包上传至服务器目录之后需要配置当前用户的环境变量4:编辑家目录下的配置文件~/.bash_profile5:增加一行配

微服务的艺术:构建可扩展和弹性的分布式应用

文章目录什么是微服务架构?微服务的设计原则1.基于业务边界划分服务2.松耦合和强内聚3.自动化测试和部署4.监控和日志5.弹性设计微服务的实施细节1.服务发现示例代码:使用Consul进行服务发现2.负载均衡示例代码:Nginx配置负载均衡3.数据管理示例代码:使用消息队列进行数据共享4.弹性设计示例代码:使用Kube

基于Matlab实现图像目标边界描述

图像目标边界描述是图像处理中的一个重要问题。边界描述可以用于目标检测和识别、图像分割等应用。Matlab提供了强大的图像处理工具箱,可以方便地实现图像目标边界描述。本文介绍一种基于边缘检测的图像目标边界描述方法,并提供一个简单的案例源码。文章目录步骤简单案例更多源码+图像下载步骤方法:基于边缘检测的图像目标边界描述方法

ruoyi框架修改左侧菜单样式

菜单效果ruoyi前端框架左侧的菜单很丑,我们需要修改一下样式,下面直接看效果。修改代码1、sidebar.scss.el-menu-item,.el-submenu__title{overflow:hidden!important;text-overflow:ellipsis!important;white-spac

Thymeleaf介绍及其在Spring Boot中的使用

📖Thymeleaf简介📚Thymeleaf的定义Thymeleaf是一款现代化的服务器端Java模板引擎,适用于Web和独立应用场景。它具备处理HTML、XML、JavaScript、CSS以及纯文本的能力。Thymeleaf的核心目标是为开发者提供一种优雅且自然的模板设计方式,从而使得开发者能够更加便捷地构建、

httpclient3.1跳过ssl验证

原来的老项目调用一个Http的服务,最近http的服务调整成了https,因此需要调整一下,网上大部分都是4.5以上版本,3.1版本处理方法比较少,因此记录一下一、实现两个类1.MyX509TrustManagerimportjava.security.cert.CertificateException;importj

SSL加速是什么,有什么优势?

SSL加速技术是一种专门用于加速HTTPS通信的技术,它可以在服务器和客户端之间提供高效的加密和解密处理,以提升网络通信的安全性和性能。以下是SSL加速技术的一些主要优势:提高网站的访问速度:SSL加速技术可以对SSL握手过程进行优化,加快SSL连接速度,从而减少响应时间和延迟,提高网站的访问速度。降低服务器负载:SS

Nacos注册中心

Nacos安装https://nacos.io/zh-cn/源码安装第一步:利用Gitee获取nacos在github上的代码到自己的gitee仓库中https://github.com/alibaba/nacos.git第二步:下载源码到本地。第三步:使用maven编译代码。#先切换到master分支gitcheck

git及dbc的学习

1)git的使用方法CommandlineinstructionsYoucanalsouploadexistingfilesfromyourcomputerusingtheinstructionsbelow.Gitglobalsetupgitconfig--globaluser.name"username"gitcon

热文推荐