当前位置: 首页 > news >正文

Python---Socket 网络通信

Socket :进程之间通信的工具,进程之间想要进行网络通信需要Socket,两个进程之间通过socket进行相互通讯,就必须有服务端和客服端。

Socket服务端编程

# 1.创建socket对象
import socketsocket_server = socket.socket()# 2. 绑定socket_server到指定IP和地址
socket_server.bind(("localhost", 8888))# 3.服务器开始监听端口   listen方法内接收一个int整数,表示允许的链接数量,超出的会等待,可以不填,不填会自动设置一个合理的值
socket_server.listen(1)# 4.接收客户端链接,获得链接对象
# accept方法是阻塞方法,等待客户端的链接,如果没有链接,就卡在这一行不想下执行了。accept返回的是二元元组(链接对象,客户端的地址信息)# 等待客户端链接
# result:tuple = socket_server.accept()
# conn =result[0]   # 客户端和服务端的链接对象
# address = result[1]  # 客户端的地址信息# 可以通过  变量1,变量2 = socket_server.accept()  的形式,直接接收二元元组内的两个元素
conn, address = socket_server.accept()  # 简写
print(f"接收到了客户端的的链接,客户端的信息是:{address}")while True:  # 持续通信# 5.客户端连接后,通过recv方法,接收客户端发送的消息(要使用客户端和服务端本次链接对象,而不是scoket_server对象)# recv接收的参数是缓冲区的大小,,一般给1024即可# recv方法返回值是一个字节数组也就是bytes对象,不是字符串,可以通过decode方法通过UTF-8编码将字节数组转换为字符串对象data: str = conn.recv(1024).decode("UTF-8")print(f"客户端发来的消息是:{data}")# 6.通过conn,调用send方法可以回复消息msg = input("请输入你要和客户端回复的消息")if msg == 'exit':breakconn.send(msg.encode("UTF-8"))  # encode方法可以将字符串编码转为字节数组对象# 7.关闭链接
conn.close()
socket_server.close()

Socket客户端编程

# Socket客户端编程
# 1.创建socket对象
import socket
socket_client = socket.socket()# 2. 连接到服务端
socket_client.connect(("localhost",8888))while True:# 3.发送消息msg=input("请输入你要和服务端发送的消息")if msg == 'exit':breaksocket_client.send("你好呀".encode("UTF-8"))# 4. 接收返回消息rece_data = socket_client.recv(1024)print(f"服务端回复的消息是:{rece_data.decode('UTF-8')}")# 5.关闭连接
socket_client.close()

http://www.lryc.cn/news/207317.html

相关文章:

  • 使用 jdbc 技术升级水果库存系统(优化版本)
  • 网络协议--广播和多播
  • python爬虫入门(三)正则表达式
  • fabric.js介绍
  • YOLOv5源码中的参数超详细解析(3)— 训练部分(train.py)| 模型训练调参
  • Linux高性能编程学习-TCP/IP协议族
  • 用爬虫代码爬取高音质音频示例
  • 深度学习与计算机视觉(一)
  • 【vector题解】杨辉三角 | 删除有序数组中的重复项 | 只出现一次的数字Ⅱ
  • 金字塔切分注意力模块PSA学习笔记 (附代码)
  • Jenkins自动化测试
  • python 字典dict和列表list的读取速度问题, range合并
  • 测试用例的设计方法(全):等价类划分方法
  • Office技巧(持续更新)(Word、Excel、PPT、PowerPoint、连续引用、标题、模板、论文)
  • Java实现ORM第一个api-FindAll
  • HFSS笔记——求解器和求解分析
  • jenkins配置gitlab凭据
  • 0基础学习PyFlink——用户自定义函数之UDTF
  • 【Java 进阶篇】Java Request 原理详解
  • 13 结构性模式-装饰器模式
  • 支持向量机(SVM)
  • Rabbitmq----分布式场景下的应用
  • springboot + redis实现签到与统计功能
  • Redis | 数据结构(02)SDS
  • Linux C语言开发-D7D8运算符
  • redis 配置主从复制,哨兵模式案例
  • Python---练习:使用for循环实现用户名+密码认证
  • react中使用jquery 语法
  • 服务器中了360后缀勒索病毒怎么解决,勒索病毒解密,数据恢复
  • 使用字节流读取文件中的数据的几种方式