游乐游手机版
首页/编程语言/文章详情

Ubuntu系统下Python网络编程入门与实践指南

时间:2026-05-06 21:08
在Ubuntu中进行Python网络编程 想在Ubuntu里玩转Python网络编程?其实没那么复杂。Python自带的socket库就是一个相当趁手的工具,能帮你快速搭建起网络通信的基础框架。下面,咱们就通过一个经典的TCP服务器与客户端对话的例子,来直观感受一下整个过程。 TCP服务器 首先,从

在Ubuntu中进行Python网络编程

想在Ubuntu里玩转Python网络编程?其实没那么复杂。Python自带的socket库就是一个相当趁手的工具,能帮你快速搭建起网络通信的基础框架。下面,咱们就通过一个经典的TCP服务器与客户端对话的例子,来直观感受一下整个过程。

TCP服务器

首先,从搭建服务器端开始。这个过程就像为一场对话准备好接听电话的房间和线路。

  1. 打开你常用的文本编辑器,新建一个文件,不妨命名为tcp_server.py
  2. 将下面的代码块复制进去。这段代码清晰地展示了服务器从创建、绑定、监听,到接收数据并回应的完整生命周期:
import socket

# 创建一个socket对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

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

# 监听连接
server_socket.listen(5)
print(f"[*] Listening on {server_host}:{server_port}")

while True:
    # 接受客户端连接
    client_socket, client_address = server_socket.accept()
    print(f"[+] {client_address} is connected.")

    # 接收数据
    data = client_socket.recv(1024).decode('utf-8')
    print(f"[+] Received message: {data}")

    # 发送数据
    response = f"[*] Server received: {data}"
    client_socket.send(response.encode('utf-8'))

    # 关闭客户端连接
    client_socket.close()
  1. 保存文件,然后打开终端,切换到文件所在目录,运行命令:python3 tcp_server.py。看到监听提示,就意味着你的服务器已经准备就绪,在默默等待客户端的“敲门”了。

TCP客户端

服务器端准备妥当,接下来就该客户端登场了。它的任务很明确:找到服务器,打个招呼,然后等待回应。

  1. 同样,新建一个文件,命名为tcp_client.py
  2. 复制下面的客户端代码。这段代码逻辑直接:建立连接、发送消息、接收反馈、然后礼貌告别:
import socket

# 创建一个socket对象
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 连接到服务器
server_host = '127.0.0.1'
server_port = 12345
client_socket.connect((server_host, server_port))

# 发送数据
message = "Hello, this is the client."
client_socket.send(message.encode('utf-8'))

# 接收数据
data = client_socket.recv(1024).decode('utf-8')
print(f"[+] Received from server: {data}")

# 关闭客户端连接
client_socket.close()
  1. 保存文件。这时,请新开一个终端窗口,运行命令:python3 tcp_client.py

现在,有趣的事情发生了。回头看看运行服务器端的那个终端窗口,你应该能看到客户端连接成功的提示,以及它发来的那条问候消息。紧接着,客户端终端也会打印出服务器返回的确认信息。瞧,一次完整的本地网络“对话”就这样轻松实现了。

这当然只是一个最基础的起点。但正所谓万丈高楼平地起,基于这个清晰的骨架,你可以自由地扩展功能,比如加入多线程处理并发连接、定义更复杂的通信协议,或者增加数据加密——网络编程的世界,从此对你敞开大门。

来源:https://www.yisu.com/ask/29528191.html
上一篇Ubuntu系统下Python代码规范与风格指南 下一篇Ubuntu系统Python自动化运维实战指南
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
RecyclerView不显示内容的常见原因及修复
编程语言 · 2026-07-07

RecyclerView不显示内容的常见原因及修复

RecyclerView无数据显示,常见原因为Adapter的getItemCount()返回0。修复方法是将硬编码的0改为动态返回数据大小,如contacts size()。增强版Adapter需实现空安全及刷新支持。其他检查点包括设置布局管理器、避免RecyclerView高度为wrap_content、确保Item布局宽高合理及数据非空验证。

Python一行代码读取多种类型输入
编程语言 · 2026-07-07

Python一行代码读取多种类型输入

使用`map(call,(int,str,int),input() split())`可一行代码解析混合类型输入,实现类型自动转换,比列表推导式更简洁。输入字段数量需与类型元组严格一致,支持封装为`read_types`函数复用。

Java中高效操作对象集合:避免无意义的Map构建
编程语言 · 2026-07-07

Java中高效操作对象集合:避免无意义的Map构建

直接遍历对象集合并访问嵌套字段执行操作,时间复杂度O(n)且无额外内存开销。先构建Map再遍历则增加哈希表初始化、键值插入和二次迭代消耗,数据量大时性能差距显著,应避免此类功能冗余。

BoxLayout仅居中一个组件其余默认对齐的方法
编程语言 · 2026-07-07

BoxLayout仅居中一个组件其余默认对齐的方法

在Swing的BoxLayout(Y_AXIS)中,setAlignmentX无法单独居中组件,因为该布局下所有组件的对齐由容器统一管理。三种可靠方案:嵌套JPanel通过分组隔离可分别设置左对齐和居中;GridBagLayout可独立控制每个组件的对齐方式;RelativeLayout允许组件单独设置其对齐方式。

Avro枚举兼容性:新增值失败原因与正确演进实践
编程语言 · 2026-07-07

Avro枚举兼容性:新增值失败原因与正确演进实践

Avro枚举向后兼容依赖二进制索引映射,JSON序列化因绕过索引机制导致新增符号失败;default仅对字段缺失生效,无法处理未知符号。演进需在末尾追加符号并采用二进制格式,推荐启用SchemaRegistry确保兼容。