随笔 - 163, 文章 - 1, 评论 - 20, 阅读 - 14万
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

Python Socket编程

Posted on   steve.z  阅读(22)  评论(0编辑  收藏  举报

Socket

客户端

#
#   py_client.py
#   py_learn
#
#   Created by Z. Steve on 2023/8/7 16:36.
#


import socket


def test_client():
    # 1. 创建 socket
    socket_client = socket.socket()
    # 2. 连接到服务器
    socket_client.connect(("localhost", 8091))
    # 3. 发送消息
    while True:
        send_msg = input("请输入你要发送的信息:")
        if send_msg == "exit":
            break
        socket_client.send(send_msg.encode("utf-8"))
        # 接收服务器返回的消息. recv() 方法会阻塞
        data = socket_client.recv(1024 * 2)
        print("服务器返回消息为: ", data.decode("utf-8"))

    # 5. 关闭连接
    socket_client.close()


if __name__ == "__main__":
    test_client()

服务端

  1. 一个服务端可以接收多个客户端请求
#
#   py_server.py
#   py_learn
#
#   Created by Z. Steve on 2023/8/7 16:16.
#

# 0. 导入 socket 模块
import socket


def test_socket():
    # 1. 创建 socket 对象
    socket_server = socket.socket()

    # 2. 绑定 IP 与 port
    ip_port = ("localhost", 8091)
    socket_server.bind(ip_port)

    # 3. 服务端开始监听端口, 参数 5 表示接受的连接数量
    socket_server.listen(5)

    # 4. 接收客户端连接, 获得连接对象; 返回值是一个元组
    # conn, 连接对象; addr, 客户端地址
    # accept() 方法会阻塞,等待客户端连接。
    conn, addr = socket_server.accept();

    print(f"客户端连接成功!客户端信息: {addr}")

    # 5. 接收客户端信息。通过 conn 来获取客户端信息
    # recv() 返回是一个字节数组, 通过 decode("utf-8") 将字节数组解码为字符串
    buf = 1024 * 2

    while True:
        data = conn.recv(buf).decode("utf-8")

        print(f"客户端发来的信息是:{data}")

        # 6. 向客户端发送信息
        msg = input("请输入向客户端发送的信息:")
        if msg == "exit":
            break
        conn.send(msg.encode("utf-8"))  # 字符串在发送前再进行 encode()

    # 7. 关闭连接
    conn.close()
    socket_server.close()


if __name__ == "__main__":
    test_socket()

相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示