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

这篇具有很好参考价值的文章主要介绍了【Python】Python 网络编程 ( Socket 套接字简介 | Socket 套接字使用步骤 | Socket 套接字服务端与客户端开发 )。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。





一、Socket 套接字简介




1、Socket 套接字概念


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

【Python】Python 网络编程 ( Socket 套接字简介 | Socket 套接字使用步骤 | Socket 套接字服务端与客户端开发 ),Python,Python,socket,网络编程,TCP,UDP,原力计划

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


2、Socket 套接字类型


套接字有两种类型 :

  • 流套接字 : 提供了一个可靠的、面向连接的通信机制 , 可以 顺序地传输数据。
    • 在 TCP/IP 协议中,流套接字使用 TCP 协议进行数据传输。
  • 数据报套接字 : 提供了一种无连接、不可靠的通信机制 , 数据 以独立的数据包形式传输。
    • 在 TCP/IP 协议中,数据报套接字使用 UDP 协议进行数据传输。

3、Socket 套接字使用步骤


Socket 套接字使用步骤 :

  • 创建套接字 : 使用 套接字 API 创建一个套接字对象 , 一般由 编程语言 官方提供 标准 API ;
  • 绑定 IP 地址和端口号 : 将套接字与一个 IP 地址 和 端口号绑定 ;
  • 建立连接 :
    • 服务器端监听连接 : 对于流套接字,需要在服务器端监听客户端的连接请求 ;
    • 客户端建立连接 : 对于流套接字,客户端需要与服务器建立连接 ;
  • 发送和接收数据 : 使用 Socket 套接字 发送 或 接收 数据 ;
  • 关闭连接 : 数据传输完毕后,关闭 Socket 套接字连接 ;

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


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

  • Socket 套接字 服务器端 : 需要 监听客户端的请求 , 可以 向 客户端 发送消息 , 可以接收来自客户端的消息 ;
  • Socket 套接字 客户端 : 需要主动连接 服务器端 , 可以 向 服务器端 发送消息 , 可以接收来自服务器端的消息 ;

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





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




1、服务端


Socket 服务器端流程 :

  • 创建套接字 : 使用 套接字 API 创建一个套接字对象 , 一般由 编程语言 官方提供 标准 API ;
# 1. 创建 socket 实例对象
import time
  • 绑定 IP 地址和端口号 : 将套接字与一个 IP 地址 和 端口号绑定 ;
# 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()
  • 发送和接收数据 : 使用 Socket 套接字 发送 或 接收 数据 ;
    # 向客户端发送连接成功提示
    client_socket.send("你好, 客户端!".encode("UTF-8"))
  • 关闭连接 : 数据传输完毕后,关闭 Socket 套接字连接 ;
    # 关闭连接
    client_socket.close()

代码示例 :

"""
Socket 服务器 代码示例
"""

# 导入 socket 模块
import socket

# 1. 创建 socket 实例对象
import time

socket_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 客户端流程 :

  • 创建套接字 : 使用 套接字 API 创建一个套接字对象 , 一般由 编程语言 官方提供 标准 API ;
# 1. 创建 socket 实例对象
client_socket = socket.socket()
  • 通过 IP 地址和端口号 连接服务器 :
# 2. 客户端连接服务器, IP 地址和端口号放在元组中
client_socket.connect(('127.0.0.1', 8090))
  • 发送和接收数据 : 使用 Socket 套接字 发送 或 接收 数据 ;
# 发送数据到服务器
client_socket.send('你好, 服务器!'.encode())
  • 关闭连接 : 数据传输完毕后,关闭 Socket 套接字连接 ;
# 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、执行结果


先启动服务器端 :

【Python】Python 网络编程 ( Socket 套接字简介 | Socket 套接字使用步骤 | Socket 套接字服务端与客户端开发 ),Python,Python,socket,网络编程,TCP,UDP,原力计划

启动客户端 :
【Python】Python 网络编程 ( Socket 套接字简介 | Socket 套接字使用步骤 | Socket 套接字服务端与客户端开发 ),Python,Python,socket,网络编程,TCP,UDP,原力计划
此时服务器端信息如下 :
【Python】Python 网络编程 ( Socket 套接字简介 | Socket 套接字使用步骤 | Socket 套接字服务端与客户端开发 ),Python,Python,socket,网络编程,TCP,UDP,原力计划
客户端中断输入 1 :

【Python】Python 网络编程 ( Socket 套接字简介 | Socket 套接字使用步骤 | Socket 套接字服务端与客户端开发 ),Python,Python,socket,网络编程,TCP,UDP,原力计划
服务器端效果 :
【Python】Python 网络编程 ( Socket 套接字简介 | Socket 套接字使用步骤 | Socket 套接字服务端与客户端开发 ),Python,Python,socket,网络编程,TCP,UDP,原力计划

客户端继续输入信息 :
【Python】Python 网络编程 ( Socket 套接字简介 | Socket 套接字使用步骤 | Socket 套接字服务端与客户端开发 ),Python,Python,socket,网络编程,TCP,UDP,原力计划
服务器端信息如下 :
【Python】Python 网络编程 ( Socket 套接字简介 | Socket 套接字使用步骤 | Socket 套接字服务端与客户端开发 ),Python,Python,socket,网络编程,TCP,UDP,原力计划

客户端输入 quit 关闭连接 :

【Python】Python 网络编程 ( Socket 套接字简介 | Socket 套接字使用步骤 | Socket 套接字服务端与客户端开发 ),Python,Python,socket,网络编程,TCP,UDP,原力计划

服务器端对应的数据 :

【Python】Python 网络编程 ( Socket 套接字简介 | Socket 套接字使用步骤 | Socket 套接字服务端与客户端开发 ),Python,Python,socket,网络编程,TCP,UDP,原力计划文章来源地址https://www.toymoban.com/news/detail-617421.html

到了这里,关于【Python】Python 网络编程 ( Socket 套接字简介 | Socket 套接字使用步骤 | Socket 套接字服务端与客户端开发 )的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 网络编程—Socket套接字详解

    目录 一、网络编程 1.1、为什么需要网络编程? 1.2、什么是网络编程 1.3、发送端和接收端 ​编辑1.4、请求和响应 ​编辑1.5、客户端和服务端  二、Socket套接字  2.1、概念 2.2、分类  2.2.1、流套接字  2.2.2、数据报套接字  2.2.3、原始套接字  2.3、Socket编程注意事项  1.1、为什

    2024年02月16日
    浏览(54)
  • 「网络编程」第二讲:网络编程socket套接字(一)

    「前言」文章是关于网络编程的socket套接字方面的,下面开始讲解! 「归属专栏」网络编程 「主页链接」个人主页 「笔者」枫叶先生(fy) 「枫叶先生有点文青病」「每篇一句」 春风得意马蹄疾,一日看尽长安花。 ——孟郊《登科后》 目录 一、预备知识 1.1 源IP和目的IP 1.

    2024年02月09日
    浏览(62)
  • [JAVAee]网络编程-套接字Socket

    目录 基本概念 发送端与接收端 请求与响应 ​编辑客户端与服务器 Socket套接字  分类 数据报套接字 流套接字传输模型   UDP数据报套接字编程 DatagramSocket API DatagramPacket API InetSocketAddress API 示例一: 示例二: TCP流数据报套接字编程 ServerSocket API Socket API 示例一:   网络编程指的

    2024年02月13日
    浏览(56)
  • 网络编程『socket套接字 ‖ 简易UDP网络程序』

    🔭个人主页: 北 海 🛜所属专栏: Linux学习之旅、神奇的网络世界 💻操作环境: CentOS 7.6 阿里云远程服务器 在当今数字化时代,网络通信作为连接世界的桥梁,成为计算机科学领域中至关重要的一部分。理解网络编程是每一位程序员必备的技能之一,而掌握套接字编程则

    2024年02月04日
    浏览(57)
  • 【网络通信】socket编程——TCP套接字

    TCP依旧使用代码来熟悉对应的套接字,很多接口都是在udp中使用过的 所以就不会单独把他们拿出来作为标题了,只会把第一次出现的接口作为标题 通过TCP的套接字 ,来把数据交付给对方的应用层,完成双方进程的通信 在 tcpServer.hpp 中,创建一个命名空间 yzq 用于封装 在命名

    2024年02月13日
    浏览(51)
  • Linux网络编程- 原始套接字(Raw Socket)

    原始套接字(Raw Socket)提供了一种机制,允许应用程序直接访问底层传输协议,绕过操作系统提供的传输层接口。这种套接字通常用于实现新的协议或对现有协议进行低级别的操作。 以下是对原始套接字的详细介绍: 定义与用途 : 原始套接字是直接基于网络层(如IP)的。

    2024年02月07日
    浏览(55)
  • 【JavaEE初阶】 网络编程基础与Socket套接字

    用户在浏览器中,打开在线视频网站,如腾讯看视频,实质是通过网络,获取到网络上的一个视频资源。 与本地打开视频文件类似,只是视频文件这个资源的来源是 网络 。 相比本地资源来说,网络提供了更为丰富的网络资源: 所谓的网络资源,其实就是在网络中可以获取

    2024年02月05日
    浏览(65)
  • 网络编程之 Socket 套接字(使用数据报套接字和流套接字分别实现一个小程序(附源码))

    网络编程是指网络上的主机,通过不同的进程,以编程的方式实现 网络通信(或称为网络数据传输) 只要满足不同的进程就可以进行通信,所以即便是在同一个主机,只要不同的进程,基于网络传输数据,也属于网络编程 在一次网络传输中: 发送端: 数据的 发送方进程

    2024年02月03日
    浏览(62)
  • 【网络编程】网络编程概念,socket套接字,基于UDP和TCP的网络编程

    前言: 大家好,我是 良辰丫 ,今天我们一起来学习网络编程,网络编程的基本概念,认识套接字,UDP与TCP编程.💞💞💞 🧑个人主页:良辰针不戳 📖所属专栏:javaEE初阶 🍎励志语句:生活也许会让我们遍体鳞伤,但最终这些伤口会成为我们一辈子的财富。 💦期待大家三连,关注

    2023年04月20日
    浏览(61)
  • 网络编程day1——进程间通信-socket套接字

            基本特征:socket是一种接口技术,被抽象了一种文件操作,可以让同一计算机中的不同进程之间通信,也可以让不同计算机中的进程之间通信(网络通信)         进程A                                                        进程B     创建socket对象

    2024年02月10日
    浏览(89)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包