文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

【Python】Python 网络编程 ( Socket 套接字简介 | Socket 套接字使用步骤 | Socket 套接字服务端与客户端开发 )

2023-08-31 05:32

关注

文章目录





一、Socket 套接字简介




1、Socket 套接字概念


Socket 套接字 是一种 进程之间的 通信机制 , 通过套接字可以在 不同的进程之间 进行数据交换 ;

在这里插入图片描述

在 网络编程 中 , Socket 套接字 主要用于 客户端 与 服务器 之间的 通信 , 大部分 网络相关的应用程序 , 都使用到了 Socket 套接字技术 ;


2、Socket 套接字类型


套接字有两种类型 :


3、Socket 套接字使用步骤


Socket 套接字使用步骤 :


4、Socket 套接字服务端与客户端


Socket 套接字 进行 数据通信时 , 需要有两个 Socket 套接字分别作为 客户端 和 服务器端 :

一个 服务器端 可以 同时与 多个 客户端 进行 数据交互 ;





二、Socket 服务端与客户端开发




1、服务端


Socket 服务器端流程 :

# 1. 创建 socket 实例对象import time
# 2. 为 socket 实例对象 绑定 IP 地址和端口号# IP 地址是字符串类型, 端口号是 int 类型, 将这两个数据定义到元组中socket_server.bind(("127.0.0.1", 8090))
    # 4. 阻塞等待连接 , 如果没有客户端连接 , 会一直阻塞在这里    # accept 函数返回的是 二元元组 , 使用两个变量接收该元组    # conn 是连接的 socket 对象    # address 是连接的 地址    client_socket, client_address = socket_server.accept()
    # 向客户端发送连接成功提示    client_socket.send("你好, 客户端!".encode("UTF-8"))
    # 关闭连接    client_socket.close()

代码示例 :

"""Socket 服务器 代码示例"""# 导入 socket 模块import socket# 1. 创建 socket 实例对象import timesocket_server = socket.socket()# 2. 为 socket 实例对象 绑定 IP 地址和端口号# IP 地址是字符串类型, 端口号是 int 类型, 将这两个数据定义到元组中socket_server.bind(("127.0.0.1", 8090))# 3. 服务器端监听端口# 传入的参数是一个整数 , 该参数表示允许连接的数量# 如果连接已满后面的连接请求会等待socket_server.listen(100)while True:    # 4. 阻塞等待连接 , 如果没有客户端连接 , 会一直阻塞在这里    # accept 函数返回的是 二元元组 , 使用两个变量接收该元组    # conn 是连接的 socket 对象    # address 是连接的 地址    client_socket, client_address = socket_server.accept()    # 向客户端发送连接成功提示    client_socket.send("你好, 客户端!".encode("UTF-8"))    print(f'客户端连接成功 {client_address}')    # 5. 服务器端与客户端进行交互    while True:        # 循环接收客户端数据, 并使用 UTF-8 解码        data = client_socket.recv(1024).decode("UTF-8")        # 向客户端会送消息        client_socket.send(f"服务端已收到: {data}".encode())        print(f"客户端: {data}")        if data == 'quit':            break    # 关闭连接    client_socket.close()    print(f'客户端连接关闭 {client_address}')

2、客户端


Socket 客户端流程 :

# 1. 创建 socket 实例对象client_socket = socket.socket()
# 2. 客户端连接服务器, IP 地址和端口号放在元组中client_socket.connect(('127.0.0.1', 8090))
# 发送数据到服务器client_socket.send('你好, 服务器!'.encode())
# 4. 关闭连接client_socket.close()

代码示例 :

import socket# 创建TCP socket对象import time# 1. 创建 socket 实例对象client_socket = socket.socket()# 2. 客户端连接服务器, IP 地址和端口号放在元组中client_socket.connect(('127.0.0.1', 8090))# 3. 向服务器端发送消息和接收消息# 发送数据到服务器client_socket.send('你好, 服务器!'.encode())print("客户端发送: 你好, 服务器!")time.sleep(1)# 接收服务器数据data = client_socket.recv(1024).decode("UTF-8")print(f"服务端: {data}")# 获取命令行输入发送给客户端while True:    command = input("请输入: ")    client_socket.send(command.encode())    print(f"客户端发送: {command}")    if command == 'quit':        break    # 接收服务器数据    data = client_socket.recv(1024).decode("UTF-8")    print(f"服务端: {data}")# 4. 关闭连接client_socket.close()print("客户端关闭")

3、执行结果


先启动服务器端 :

在这里插入图片描述

启动客户端 :
在这里插入图片描述
此时服务器端信息如下 :
在这里插入图片描述
客户端中断输入 1 :

在这里插入图片描述
服务器端效果 :
在这里插入图片描述

客户端继续输入信息 :
在这里插入图片描述
服务器端信息如下 :
在这里插入图片描述

客户端输入 quit 关闭连接 :

在这里插入图片描述

服务器端对应的数据 :

在这里插入图片描述

来源地址:https://blog.csdn.net/han1202012/article/details/131967671

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯