python中TCP回声服务器与客户端示例

简介: 【4月更文挑战第7天】本示例展示了TCP回声服务器和客户端的工作流程。服务器监听特定端口,接收客户端连接请求,接收数据并回显。客户端连接服务器,发送数据并接收回显。代码示例用Python实现,包括服务器的`socket.bind()`, `socket.listen()`, `socket.accept()`和客户端的`socket.connect()`, `socket.sendall()`, `socket.recv()`。运行示例时,先启动服务器再启动客户端,可观察TCP连接和数据传输过程。了解这些基础对于构建网络应用至关重要。

在本小节中,我们将通过一个简单的示例来演示TCP回声服务器与客户端的工作流程。回声服务器是一种简单的服务器程序,它会将接收到的任何数据原样发送回客户端。通过实现这样一个服务器和客户端,我们可以更好地理解TCP连接和数据传输的过程。

一、TCP回声服务器

首先,我们来实现一个TCP回声服务器。服务器需要监听一个特定的端口,等待客户端的连接请求,并在连接建立后接收并回显客户端发送的数据。

import socket

# 创建TCP Socket对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 绑定IP地址和端口号
server_address = ('127.0.0.1', 12345)
server_socket.bind(server_address)

# 开始监听连接请求
server_socket.listen(1)
print(f"Listening on {server_address[0]}:{server_address[1]}")

while True:
    # 接受客户端连接请求
    print("Waiting for a connection...")
    connection, client_address = server_socket.accept()
    try:
        print(f"Connection from {client_address}")

        # 接收数据并回显
        while True:
            data = connection.recv(1024)
            if not data:
                break
            print(f"Received {len(data)} bytes from {client_address}")
            connection.sendall(data)
    finally:
        # 关闭连接
        connection.close()

在上面的代码中,我们创建了一个TCP Socket对象,并绑定了服务器的IP地址和端口号。然后,通过调用listen()方法开始监听连接请求。在无限循环中,我们使用accept()方法接受客户端的连接请求,并在一个内部循环中接收数据并回显给客户端。当客户端关闭连接或发送空数据时,内部循环会结束,并关闭连接。

二、TCP回声客户端

接下来,我们实现一个简单的TCP回声客户端。客户端需要连接到服务器,发送数据,并接收服务器的回显。

import socket

# 创建TCP Socket对象
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 连接到服务器
server_address = ('127.0.0.1', 12345)
print(f"Connecting to {server_address[0]}:{server_address[1]}")
client_socket.connect(server_address)

try:
    # 发送数据
    message = 'Hello, Echo Server!'
    print(f"Sending {message}")
    client_socket.sendall(message.encode('utf-8'))

    # 接收回显数据
    amount_received = 0
    amount_expected = len(message)

    while amount_received < amount_expected:
        data = client_socket.recv(16)
        amount_received += len(data)
        print(f"Received {len(data)} bytes")
        if data:
            print(f"Received {data.decode('utf-8')}")
finally:
    # 关闭连接
    print("Closing connection")
    client_socket.close()

在客户端代码中,我们创建了一个TCP Socket对象,并使用connect()方法连接到服务器。然后,我们发送一条消息给服务器,并使用一个循环来接收服务器的回显数据,直到接收到的数据长度等于我们发送的消息长度。最后,我们关闭连接。

三、运行示例

要运行这个示例,首先启动回声服务器,然后在另一个终端或窗口中启动回声客户端。你会看到服务器输出连接信息和接收到的数据长度,而客户端会输出发送的消息和接收到的回显数据。

四、总结

通过实现一个简单的TCP回声服务器与客户端示例,我们演示了TCP连接和数据传输的基本流程。在实际应用中,你可以根据需要在服务器和客户端之间传输更复杂的数据结构,并实现更复杂的交互逻辑。掌握这些基本概念和技术将帮助你构建功能强大的网络应用程序。

相关文章
|
29天前
|
数据挖掘 Python
Python示例,展示如何找到最近一次死叉之后尚未形成金叉的位置
【10月更文挑战第7天】金融分析中,“死叉”指短期移动平均线(如MA5)跌破长期移动平均线(如MA10),而“金叉”则相反。本文提供Python代码示例,用于找出最近一次死叉后未形成金叉的位置,涵盖移动平均线计算、交叉点判断及结果输出等步骤,适合金融数据分析。
34 4
|
1天前
|
弹性计算 开发工具 git
2分钟在阿里云ECS控制台部署个人应用(图文示例)
作为一名程序员,我在部署托管于Github/Gitee的代码到阿里云ECS服务器时,经常遇到繁琐的手动配置问题。近期,阿里云ECS控制台推出了一键构建部署功能,简化了这一过程,支持Gitee和GitHub仓库,自动处理git、docker等安装配置,无需手动登录服务器执行命令,大大提升了部署效率。本文将详细介绍该功能的使用方法和适用场景。
2分钟在阿里云ECS控制台部署个人应用(图文示例)
|
29天前
|
Python
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
使用Python的socket库实现客户端到服务器端的图片传输,包括客户端和服务器端的代码实现,以及传输结果的展示。
118 3
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
|
29天前
|
JSON 数据格式 Python
Socket学习笔记(一):python通过socket实现客户端到服务器端的文件传输
本文介绍了如何使用Python的socket模块实现客户端到服务器端的文件传输,包括客户端发送文件信息和内容,服务器端接收并保存文件的完整过程。
118 1
Socket学习笔记(一):python通过socket实现客户端到服务器端的文件传输
|
9天前
|
数据挖掘 Python
Python示例,展示如何找到最近一次死叉之后尚未形成金叉的位置
金融分析中,“死叉”指短期移动平均线(如MA5)跌破长期移动平均线(如MA10),而“金叉”则相反。本文提供Python代码示例,用于找出最近一次死叉后未形成金叉的位置,涵盖移动平均线计算、交叉点判断及结果输出等步骤,适合金融数据分析。
15 1
|
27天前
|
网络协议 Unix Linux
一个.NET开源、快速、低延迟的异步套接字服务器和客户端库
一个.NET开源、快速、低延迟的异步套接字服务器和客户端库
|
24天前
|
安全 区块链 数据库
|
24天前
|
Linux Android开发 开发者
【Python】GUI:Kivy库环境安装与示例
这篇文章介绍了 Kivy 库的安装与使用示例。Kivy 是一个开源的 Python 库,支持多平台开发,适用于多点触控应用。文章详细说明了 Kivy 的主要特点、环境安装方法,并提供了两个示例:一个简单的 Hello World 应用和一个 BMI 计算器界面。
38 0
|
1天前
|
存储 分布式计算 固态存储
阿里云2核16G、4核32G、8核64G配置云服务器租用收费标准与活动价格参考
2核16G、8核64G、4核32G配置的云服务器处理器与内存比为1:8,这种配比的云服务器一般适用于数据分析与挖掘,Hadoop、Spark集群和数据库,缓存等内存密集型场景,因此,多为企业级用户选择。目前2核16G配置按量收费最低收费标准为0.54元/小时,按月租用标准收费标准为260.44元/1个月。4核32G配置的阿里云服务器按量收费标准最低为1.08元/小时,按月租用标准收费标准为520.88元/1个月。8核64G配置的阿里云服务器按量收费标准最低为2.17元/小时,按月租用标准收费标准为1041.77元/1个月。本文介绍这些配置的最新租用收费标准与活动价格情况,以供参考。
|
7天前
|
弹性计算
阿里云2核16G服务器多少钱一年?亲测价格查询1个月和1小时收费标准
阿里云2核16G服务器提供多种ECS实例规格,内存型r8i实例1年6折优惠价为1901元,按月收费334.19元,按小时收费0.696221元。更多规格及详细报价请访问阿里云ECS页面。
39 9
下一篇
无影云桌面