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连接和数据传输的基本流程。在实际应用中,你可以根据需要在服务器和客户端之间传输更复杂的数据结构,并实现更复杂的交互逻辑。掌握这些基本概念和技术将帮助你构建功能强大的网络应用程序。

相关文章
|
12月前
|
人工智能 JavaScript API
零基础构建MCP服务器:TypeScript/Python双语言实战指南
作为一名深耕技术领域多年的博主摘星,我深刻感受到了MCP(Model Context Protocol)协议在AI生态系统中的革命性意义。MCP作为Anthropic推出的开放标准,正在重新定义AI应用与外部系统的交互方式,它不仅解决了传统API集成的复杂性问题,更为开发者提供了一个统一、安全、高效的连接框架。在过去几个月的实践中,我发现许多开发者对MCP的概念理解透彻,但在实际动手构建MCP服务器时却遇到了各种技术壁垒。从环境配置的细节问题到SDK API的深度理解,从第一个Hello World程序的调试到生产环境的部署优化,每一个环节都可能成为初学者的绊脚石。因此,我决定撰写这篇全面的实
2687 67
零基础构建MCP服务器:TypeScript/Python双语言实战指南
|
11月前
|
人工智能 自然语言处理 安全
Python构建MCP服务器:从工具封装到AI集成的全流程实践
MCP协议为AI提供标准化工具调用接口,助力模型高效操作现实世界。
1803 1
|
人工智能 安全 Shell
Jupyter MCP服务器部署实战:AI模型与Python环境无缝集成教程
Jupyter MCP服务器基于模型上下文协议(MCP),实现大型语言模型与Jupyter环境的无缝集成。它通过标准化接口,让AI模型安全访问和操作Jupyter核心组件,如内核、文件系统和终端。本文深入解析其技术架构、功能特性及部署方法。MCP服务器解决了传统AI模型缺乏实时上下文感知的问题,支持代码执行、变量状态获取、文件管理等功能,提升编程效率。同时,严格的权限控制确保了安全性。作为智能化交互工具,Jupyter MCP为动态计算环境与AI模型之间搭建了高效桥梁。
871 2
Jupyter MCP服务器部署实战:AI模型与Python环境无缝集成教程
|
12月前
|
安全 Linux 网络安全
Python极速搭建局域网文件共享服务器:一行命令实现HTTPS安全传输
本文介绍如何利用Python的http.server模块,通过一行命令快速搭建支持HTTPS的安全文件下载服务器,无需第三方工具,3分钟部署,保障局域网文件共享的隐私与安全。
3011 0
|
存储 监控 API
【Azure App Service】分享使用Python Code获取App Service的服务器日志记录管理配置信息
本文介绍了如何通过Python代码获取App Service中“Web服务器日志记录”的配置状态。借助`azure-mgmt-web` SDK,可通过初始化`WebSiteManagementClient`对象、调用`get_configuration`方法来查看`http_logging_enabled`的值,从而判断日志记录是否启用及存储方式(关闭、存储或文件系统)。示例代码详细展示了实现步骤,并附有执行结果与官方文档参考链接,帮助开发者快速定位和解决问题。
400 22
|
人工智能 搜索推荐 程序员
用 Go 语言轻松构建 MCP 客户端与服务器
本文介绍了如何使用 mcp-go 构建一个完整的 MCP 应用,包括服务端和客户端两部分。 - 服务端支持注册工具(Tool)、资源(Resource)和提示词(Prompt),并可通过 stdio 或 sse 模式对外提供服务; - 客户端通过 stdio 连接服务器,支持初始化、列出服务内容、调用远程工具等操作。
3204 5
|
9月前
|
弹性计算 运维 安全
阿里云轻量应用服务器与云服务器ECS啥区别?新手帮助教程
阿里云轻量应用服务器适合个人开发者搭建博客、测试环境等低流量场景,操作简单、成本低;ECS适用于企业级高负载业务,功能强大、灵活可扩展。二者在性能、网络、镜像及运维管理上差异显著,用户应根据实际需求选择。
802 10
|
9月前
|
弹性计算 ice
阿里云4核8g服务器多少钱一年?1个月和1小时价格,省钱购买方法分享
阿里云4核8G服务器价格因实例类型而异,经济型e实例约159元/月,计算型c9i约371元/月,按小时计费最低0.45元。实际购买享折扣,1年最高可省至1578元,附主流ECS实例及CPU型号参考。
856 8
|
9月前
|
运维 安全 Ubuntu
阿里云渠道商:服务器操作系统怎么选?
阿里云提供丰富操作系统镜像,涵盖Windows与主流Linux发行版。选型需综合技术兼容性、运维成本、安全稳定等因素。推荐Alibaba Cloud Linux、Ubuntu等用于Web与容器场景,Windows Server支撑.NET应用。建议优先选用LTS版本并进行测试验证,通过标准化镜像管理提升部署效率与一致性。

热门文章

最新文章

推荐镜像

更多