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

Python---Socket 网络通信

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

Socket服务端编程

# 1.创建socket对象
import socket

socket_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':
        break
    conn.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':
        break
    socket_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.kler.cn/a/105178.html

相关文章:

  • http post协议实现简单的rpc协议,WireShark抓包分析
  • 数据库Redis(二):基本数据类型
  • 经典卷积神经网络 - ResNet
  • leetcode经典面试150题---2.移除元素
  • Redis笔记
  • 数据结构——10.24
  • 【API篇】六、Flink输出算子Sink
  • C51--超声波测距
  • Qt之自定义QStringListModel设置背景色和前景色
  • 1.2、Python基础-函数
  • Java设计模式大揭秘,细致剖析5种经典模式
  • 你真的了解CPU和GPU?
  • 低概率Bug,研发敷衍说复现不到
  • 【Java 进阶篇】Java HTTP 概述
  • 使用AOP切面实现日志记录功能
  • Codeforces Round 904 (Div. 2) C
  • Pytorch指定数据加载器使用子进程
  • 09. 主频和时钟配置
  • 本地存储 sessionStoragelocalStorage
  • Linux本地RStudio工具安装指南及远程访问配置安装RStudio Server