当前位置:首页 >> 编程语言 >> 【Python】Python 网络编程 ( Socket 套接字简介 - Socket 套接字使用步骤 - Socket 套接字服务端与客户端开发 ),280x

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

0evadmin 编程语言 1
文件名:【Python】Python 网络编程 ( Socket 套接字简介 - Socket 套接字使用步骤 - Socket 套接字服务端与客户端开发 ),280x 【Python】Python 网络编程 ( Socket 套接字简介 | Socket 套接字使用步骤 | Socket 套接字服务端与客户端开发 )

文章目录 一、Socket 套接字简介1、Socket 套接字概念2、Socket 套接字类型3、Socket 套接字使用步骤4、Socket 套接字服务端与客户端 二、Socket 服务端与客户端开发1、服务端2、客户端3、执行结果

一、Socket 套接字简介
1、Socket 套接字概念

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

在 网络编程 中 , 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 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 客户端流程 :

创建套接字 : 使用 套接字 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、执行结果

先启动服务器端 :

启动客户端 : 此时服务器端信息如下 : 客户端中断输入 1 :

服务器端效果 :

客户端继续输入信息 : 服务器端信息如下 :

客户端输入 quit 关闭连接 :

服务器端对应的数据 :

协助本站SEO优化一下,谢谢!
关键词不能为空
同类推荐
«    2025年12月    »
1234567
891011121314
15161718192021
22232425262728
293031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接