在Python中TCP网络程序开发的步骤流程

在Python中TCP网络程序开发的步骤流程

一、TCP服务器程序开发流程:

python 复制代码
服务器端, 实现步骤:
    1. 创建服务器端的Socket对象.
    2. 绑定Ip地址 和 端口号.
    3. 设置最大监听数(允许挂载, 挂起的数量)
    4. 具体的监听动作, 接收客户端请求, 并获取1个socket对象, 负责和该客户端的交互.
    5. 给 客户端 发送1句话, 二进制形式.
    6. 接收客户端发过来的回执信息(二进制信息), 记得转成 字符串, 并打印.
    7. 释放资源, 关闭accept_socket.
python 复制代码
"""
案例: 演示TCP入门, 即: 服务器端给客户端发送1句话, 客户端收到后, 给出回执信息.

流程:
    1. 服务器端  =>  客户端发送,  'Welcome to study socket!'
    2. 客户端接收到消息后, 打印, 并给出回执信息.  '消息已收到, So Easy!'
    3. 服务器端收到 客户端的 回执信息, 打印即可.

服务器端, 实现步骤:
    1. 创建服务器端的Socket对象.
    2. 绑定Ip地址 和 端口号.
    3. 设置最大监听数(允许挂载, 挂起的数量)
    4. 具体的监听动作, 接收客户端请求, 并获取1个socket对象, 负责和该客户端的交互.
    5. 给 客户端 发送1句话, 二进制形式.
    6. 接收客户端发过来的回执信息(二进制信息), 记得转成 字符串, 并打印.
    7. 释放资源, 关闭accept_socket.
"""
# 当前代码为: 服务器端的代码.
import socket

# 1. 创建服务器端的Socket对象.   参1: IpV4规则,  参2: 流的形式传输数据.
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 2. 绑定Ip地址 和 端口号.
server_socket.bind(('127.0.0.1', 12306))        # 127.0.0.1 代表本地回路(回环)地址, 在哪里运行, 就代表本机.
# 3. 设置最大监听数(允许挂载, 挂起的数量)
server_socket.listen(5)
# 4. 具体的监听动作, 接收客户端请求, 并获取1个socket对象, 负责和该客户端的交互.
# accept_socket: 负责和客户端交互的socket对象.
# client_info:   客户端的ip信息.
print('server: 1')
accept_socket, client_info = server_socket.accept()
# print(f'客户端ip: {client_info}')
print('server: 2')
# 5. 给 客户端 发送1句话, 二进制形式.
accept_socket.send(b'Welcome to study socket!')

# 6. 接收客户端发过来的回执信息(二进制信息), 记得转成 字符串, 并打印.
# 1024表示 一次性接收客户端数据的长度(单位: 字节), 超出则无法接收.
recv_data_bytes = accept_socket.recv(1024)
recv_data = recv_data_bytes.decode(encoding='utf-8')        # 把 二进制字符串 转成 字符串.
print(f'服务器端收到回执信息: {recv_data}')

# 7. 释放资源, 关闭accept_socket.
accept_socket.close()     # 和客户端交互的socket, 一般要关闭.
# server_socket.close()   服务器端一般不关闭.

二、 TCP客户端程序开发流程:

python 复制代码
客户端, 实现步骤:
    1. 创建客户端的Socket对象.
    2. 连接服务器端的 Ip地址 和 端口号.
    3. 接收服务器端发过来的信息(二进制信息), 记得转成 字符串, 并打印.
    4. 给 服务器端 发送1句话, 二进制形式.
    5. 释放资源, 关闭accept_socket.
python 复制代码
"""
案例: 演示TCP入门, 即: 服务器端给客户端发送1句话, 客户端收到后, 给出回执信息.

流程:
    1. 服务器端  =>  客户端发送,  'Welcome to study socket!'
    2. 客户端接收到消息后, 打印, 并给出回执信息.  '消息已收到, So Easy!'
    3. 服务器端收到 客户端的 回执信息, 打印即可.

客户端, 实现步骤:
    1. 创建客户端的Socket对象.
    2. 连接服务器端的 Ip地址 和 端口号.
    3. 接收服务器端发过来的信息(二进制信息), 记得转成 字符串, 并打印.
    4. 给 服务器端 发送1句话, 二进制形式.
    5. 释放资源, 关闭accept_socket.
"""
# 导包
import socket

# 1. 创建客户端的Socket对象. 参1: IpV4规则,  参2: 流的形式传输数据.
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 2. 连接服务器端的 Ip地址 和 端口号.
client_socket.connect(('127.0.0.1', 12306))

# 3. 接收服务器端发过来的信息(二进制信息), 记得转成 字符串, 并打印.
recv_data_bytes = client_socket.recv(1024)
recv_data = recv_data_bytes.decode(encoding='utf-8')        # 把 二进制字符串 转成 字符串.
print(f'客户端收到: {recv_data}')

# 4. 给 服务器端 发送1句话, 二进制形式.
client_socket.send('消息已收到, 有内鬼, 终止交易, Over!'.encode(encoding='utf-8'))


# 5. 释放资源, 关闭client_socket.
client_socket.close()
相关推荐
徐小黑ACG4 分钟前
Golang 基础05 结构体struct
开发语言·算法·golang
hz5678912 分钟前
涉密视频会议设备配置指南:终端、音视频采集与配套设施选型
服务器·网络·数据库·安全·实时音视频·信息与通信·智能硬件
广州浮点FLOATLIC17 分钟前
许可证服务器迁移后软件打不开:研发 IT 怎样定位连接问题
linux·服务器·数据库
优橙教育21 分钟前
零基础学AI应用开发要多久?3个月能到什么水平
服务器·开发语言·网络·php
IT研究所35 分钟前
AI-ITR平台如何减少客户问题反复升级?
大数据·运维·人工智能·低代码·自然语言处理·安全架构·企微
AIgorithmGEEK42 分钟前
[Linux]从手写报头到内核套路:序列化、反序列化与自定义协议全链路
linux·运维·服务器·网络·序列化·反序列化
SEO_juper1 小时前
用 Python 写一个 GEO 可见性检查脚本:你的网站现在能被 AI 引用吗
开发语言·人工智能·爬虫·python·seo·外贸独立站
Nil2081 小时前
leetcode 139单词拆分
linux·运维·服务器
Starry-sky(jing)1 小时前
BUG: unable to handle kernel paging request 完整排查:dmesg 四要素与三路定罪
linux·运维·服务器·内核·排障
mounter6251 小时前
从硬件互连到操作系统变革:CXL 技术演进与 Linux 内核工程挑战
linux·运维·服务器