Python网络编程——TCP套接字通信、通信循环、链接循环、UDP通信
2022/3/3 14:15:38
本文主要是介绍Python网络编程——TCP套接字通信、通信循环、链接循环、UDP通信,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
文章目录
- 基于TCP的套接字通信
- 加上通信循环
- 加上链接循环
- 基于UDP协议的套接字通信
基于TCP的套接字通信
以买手机的过程为例
服务端代码
import socket # 1、买手机 phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 流式协议=》tcp协议 # 2、绑定手机卡 phone.bind(('127.0.0.1', 8081)) # 0-65535, 1024以前的都被系统保留使用 # 3、开机 phone.listen(5) # 5指的是半连接池的大小 print('服务端启动完成,监听地址为:%s:%s' % ('127.0.0.1', 8080)) # 4、等待电话连接请求:拿到电话连接conn conn, client_addr = phone.accept() # print(conn) print("客户端的ip和端口:", client_addr) # 5、通信:收\发消息 data = conn.recv(1024) # 最大接收的数据量为1024Bytes,收到的是bytes类型 print("客户端发来的消息:", data.decode('utf-8')) conn.send(data.upper()) # 6、关闭电话连接conn(必选的回收资源的操作) conn.close() # 7、关机(可选操作) phone.close()
客户端代码
import socket #1、买手机 phone=socket.socket(socket.AF_INET,socket.SOCK_STREAM) # 流式协议=》tcp协议 #2、拨通服务端电话 phone.connect(('127.0.0.1',8081)) #3、通信 import time time.sleep(10) phone.send('hello egon 哈哈哈'.encode('utf-8')) data=phone.recv(1024) print(data.decode('utf-8')) #4、关闭连接(必选的回收资源的操作) phone.close()
加上通信循环
服务端
import socket # 1、买手机 phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 流式协议=》tcp协议 # 2、绑定手机卡 phone.bind(('127.0.0.1', 8083)) # 0-65535, 1024以前的都被系统保留使用 # 3、开机 phone.listen(5) # 5指的是半连接池的大小 print('服务端启动完成,监听地址为:%s:%s' % ('127.0.0.1', 8080)) # 4、等待电话连接请求:拿到电话连接conn conn, client_addr = phone.accept() # 5、通信:收\发消息 while True: try: data = conn.recv(1024) # 最大接收的数据量为1024Bytes,收到的是bytes类型 if len(data) == 0: # 在unix系统洗,一旦data收到的是空 # 意味着是一种异常的行为:客户度非法断开了链接 break print("客户端发来的消息:", data.decode('utf-8')) conn.send(data.upper()) except Exception: # 针对windows系统 break # 6、关闭电话连接conn(必选的回收资源的操作) conn.close() # 7、关机(可选操作) phone.close()
客户端
import socket # 1、买手机 phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 流式协议=》tcp协议 # 2、拨通服务端电话 phone.connect(('127.0.0.1', 8083)) # 3、通信 while True: msg = input("输入要发送的消息>>>: ").strip() # msg='' if len(msg) == 0: continue phone.send(msg.encode('utf-8')) print('======?') data = phone.recv(1024) print(data.decode('utf-8')) # 4、关闭连接(必选的回收资源的操作) phone.close()
加上链接循环
服务端应该满足的特点: 1、一直提供服务 2、并发地提供服务
# 服务端 import socket # 1、买手机 phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 流式协议=》tcp协议 # 2、绑定手机卡 phone.bind(('127.0.0.1', 8080)) # 0-65535, 1024以前的都被系统保留使用 # 3、开机 phone.listen(5) # 5指的是半连接池的大小 print('服务端启动完成,监听地址为:%s:%s' % ('127.0.0.1', 8080)) # 4、等待电话连接请求:拿到电话连接conn # 加上链接循环 while True: conn, client_addr = phone.accept() # 5、通信:收\发消息 while True: try: data = conn.recv(1024) # 最大接收的数据量为1024Bytes,收到的是bytes类型 if len(data) == 0: # 在unix系统洗,一旦data收到的是空 # 意味着是一种异常的行为:客户度非法断开了链接 break print("客户端发来的消息:", data.decode('utf-8')) conn.send(data.upper()) except Exception: # 针对windows系统 break # 6、关闭电话连接conn(必选的回收资源的操作) conn.close() # 7、关机(可选操作) phone.close()
客户端1
import socket #1、买手机 phone=socket.socket(socket.AF_INET,socket.SOCK_STREAM) # 流式协议=》tcp协议 #2、拨通服务端电话 phone.connect(('127.0.0.1',8080)) #3、通信 while True: msg=input("输入要发送的消息>>>: ").strip() #msg='' if len(msg) == 0:continue phone.send(msg.encode('utf-8')) print('======?') data=phone.recv(1024) print(data.decode('utf-8')) #4、关闭连接(必选的回收资源的操作) phone.close()
基于UDP协议的套接字通信
服务端
import socket server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 数据报协议=》udp协议 server.bind(('127.0.0.1', 8081)) while True: data, client_addr = server.recvfrom(1024) server.sendto(data.upper(), client_addr) server.close()
客户端
import socket client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 流式协议=》tcp协议 while True: msg = input('>>>: ').strip() client.sendto(msg.encode('utf-8'), ('127.0.0.1', 8081)) res = client.recvfrom(1024) print(res) client.close()
这篇关于Python网络编程——TCP套接字通信、通信循环、链接循环、UDP通信的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-14获取参数学习:Python编程入门教程
- 2024-11-14Python编程基础入门
- 2024-11-14Python编程入门指南
- 2024-11-13Python基础教程
- 2024-11-12Python编程基础指南
- 2024-11-12Python基础编程教程
- 2024-11-08Python编程基础与实践示例
- 2024-11-07Python编程基础指南
- 2024-11-06Python编程基础入门指南
- 2024-11-06怎么使用python 计算两个GPS的距离功能-icode9专业技术文章分享