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 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> TCP与UDP套接字Python编程 -> 正文阅读

[网络协议]TCP与UDP套接字Python编程

一、套接字

套接字(socket)是同一台主机内应用层和运输层的接口。
在这里插入图片描述
进程可类比为一个房子,套接字为该进程的门,当一个进程想向另一台主机发送报文时,该进程把报文推出门(套接字),通过运输层的运输到另一台主机的目的进程,一旦报文到达目的主机,它通过接收进程的门(套接字)传递,接收进程开始处理报文。
可以看到,应用程序开发者在套接字应用层一侧可以控制所有,但是几乎无法控制运输层。

二、UDP编程

1、UDPServer

from socket import *
serverPort = 12000    #服务端的端口号
serverSocket = socket(AF_INET,SOCK_DGRAM)  #创建一个套接字
serverSocket.bind(('',serverPort))         #绑定地址(host,port)到套接字
print("The server is ready to receive")    #提示服务器准备就绪
while True: #死循环,True为布尔值,值为1
    message,clientAddress = serverSocket.recvfrom(2048) #接收UDP数据
    modifiedMessage = message.decode().upper() #解码,转换 upper()方法将字符串小写转换为大写
    serverSocket.sendto(modifiedMessage.encode(), clientAddress) #编码发送到客户端

2、UDPClient

from socket import *
serverName = '127.0.0.1'   #服务端的IP地址
serverPort = 12000            #服务端的端口号
clientSocket = socket(AF_INET,SOCK_DGRAM)  #创建一个套接字
message = input('Input lowercase sentence:')  #从键盘获取报文
clientSocket.sendto(message.encode(),(serverName,serverPort)) #字符串编码发送UDP数据到服务端
modifiedMessage,serverAddresss = clientSocket.recvfrom(2048) #接收UDP数据,返回值:(data,address)
print(modifiedMessage.decode()) #将数据解码并打印
clientSocket.close()  #关闭套接字

三、TCP编程

1、TCPServer

from socket import *
serverPort = 12000    #服务端的端口号
serverSocket = socket(AF_INET,SOCK_STREAM)  #创建一个套接字
serverSocket.bind(('',serverPort))         #绑定地址(host,port)到套接字
serverSocket.listen(1)  #请求连接的最大数
print("The server is ready to receive")    #提示服务器准备就绪
while True:
    connectSocket,addr = serverSocket.accept() #创建连接套接字
    Message = connectSocket.recv(1024).decode() #解码
    capitalizedMessage = Message.upper()     #转化
    connectSocket.send(capitalizedMessage.encode()) #编码发送
    connectSocket.close()  #关闭连接套接字

2、TCPClient

from socket import *
serverName = '127.0.0.1'   #服务端的IP地址
serverPort = 12000            #服务端的端口号
clientSocket = socket(AF_INET,SOCK_STREAM)  #创建一个套接字
clientSocket.connect((serverName,serverPort)) #建立TCP连接,进行三次握手
message = input('Input Message:')  #从键盘获取报文
clientSocket.send(message.encode()) #字符串转化为UTF-8编码,并发送TCP数据到服务端,不需要附加目的地址和端口
modifiedMessage = clientSocket.recv(1024)  #接收TCP数据,返回值:(data)
print('From Server:',modifiedMessage.decode())  #解码输出
clientSocket.close()  #关闭连接套接字
  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-11-10 12:45:58  更:2021-11-10 12:48:41 
 
开发: 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/1 21:47:40-

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