Python 网络编程基础:套接字(Sockets)入门与实践

简介: 【5月更文挑战第18天】Python网络编程中的套接字是程序间通信的基础,分为TCP和UDP。TCP套接字涉及创建服务器套接字、绑定地址和端口、监听、接受连接及数据交换。UDP套接字则无连接状态。示例展示了TCP服务器和客户端如何使用套接字通信。注意选择唯一地址和端口,处理异常以确保健壮性。学习套接字可为构建网络应用打下基础。

在 Python 网络编程中,套接字(Sockets)是核心概念之一,它为程序间的网络通信提供了基础。

一、套接字简介

套接字是网络通信的端点,它允许不同计算机上的程序进行通信。

二、TCP 套接字

  1. 创建服务器套接字
    使用socket.socket()函数创建套接字。

  2. 绑定地址和端口
    指定服务器监听的地址和端口。

  3. 监听连接
    调用listen()方法开始监听客户端连接。

  4. 接受客户端连接
    通过accept()方法接受客户端的连接请求。

  5. 数据通信
    使用recv()send()方法进行数据的接收和发送。

三、UDP 套接字

与 TCP 套接字类似,但 UDP 是无连接的协议。

示例代码:

TCP 服务器示例:

import socket

def tcp_server():
    server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    server_address = ('127.0.0.1', 8888)
    server_socket.bind(server_address)
    server_socket.listen(5)

    print("服务器启动,监听端口 8888...")

    client_socket, client_address = server_socket.accept()
    print(f"客户端 {client_address} 连接成功")

    data = client_socket.recv(1024)
    print(f"收到客户端数据: {data.decode('utf-8')}")

    response = "你好,客户端!"
    client_socket.send(response.encode('utf-8'))

    client_socket.close()
    server_socket.close()

tcp_server()

TCP 客户端示例:

import socket

def tcp_client():
    client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    server_address = ('127.0.0.1', 8888)
    client_socket.connect(server_address)

    message = "我是客户端"
    client_socket.send(message.encode('utf-8'))

    response = client_socket.recv(1024)
    print(f"收到服务器响应: {response.decode('utf-8')}")

    client_socket.close()

tcp_client()

四、注意事项

  1. 地址和端口的选择要避免冲突。
  2. 处理好异常情况,确保程序的健壮性。

通过对套接字的学习和实践,我们可以构建各种网络应用,实现不同程序之间的通信和数据交换。随着对网络编程的深入理解,我们可以进一步探索更复杂的网络架构和应用场景。

相关文章
|
2天前
|
数据挖掘 数据处理 Python
Python编程入门:从基础到实践
【6月更文挑战第26天】这篇文章引导读者逐步学习Python编程,从基础语法如变量、数据类型(整数、浮点数、字符串)到条件语句、循环(if/for/while),再到函数定义和模块导入。通过实例展示了Python在文本处理、数据分析(使用pandas)和Web开发(使用Flask)的应用。学习Python能为初学者开启更广阔的技术领域,如面向对象编程、并发和网络编程等。
|
2天前
|
自然语言处理 编译器 PHP
Python入门
【6月更文挑战第27天】Python入门。
7 3
|
3天前
|
存储 数据库 文件存储
Python中实现限定抽奖次数的机制的项目实践
本文介绍了如何在Python中实现限定抽奖次数的机制。通过选择合适的数据结构、设计清晰的逻辑流程以及编写简洁明了的代码,我们可以轻松地实现这一功能。同时,我们还探讨了如何对系统进行扩展和优化,以满足更多的实际需求。希望本文能对新手在开发抽奖系统时有所帮助。
|
2天前
|
Python
python3 入门学习笔记
python3 入门学习笔记
3 0
|
2天前
|
人工智能 数据挖掘 大数据
538个代码示例!麻省理工教授的Python程序设计+人工智能案例实践
Python简单易学,且提供了丰富的第三方库,可以用较少的代码完成较多的工作,使开发者能够专注于如何解决问题而只花较少的时间去考虑如何编程。 此外,Python还具有免费开源、跨平台、面向对象、胶水语言等优点,在系统编程、图形界面开发、科学计算、Web开发、数据分析、人工智能等方面有广泛应用。 尤其是在数据分析和人工智能方面,Python已成为最受开发者欢迎的编程语言之一,不仅大量计算机专业人员选择使用Python进行快速开发,许多非计算机专业人员也纷纷选择Python语言来解决专业问题。 由于Python应用广泛,关于Python的参考书目前已经有很多,但将Python编程与数据分析、人工智
|
3天前
|
分布式计算 数据挖掘 索引
26段简短代码入门Python
26段简短代码入门Python
|
3天前
|
存储 Shell Python
Python 实践建议和技巧
Python 实践建议和技巧
|
Shell 索引 Python
Python开发基础总结(一)套接字+字符串+正则表达式
Python开发基础总结(一)套接字+字符串+正则表达式
|
6天前
|
机器学习/深度学习 人工智能 前端开发
Python中的模块化编程
【6月更文挑战第17天】Python模块化编程与软件架构设计的关键在于拆分任务到独立模块,提高代码的可维护性、可重用性和可扩展性。例如,学生管理系统可分解为录入、查询和删除模块。MVC和MVVM架构模式有助于组织代码,而微服务和函数式编程将在未来发展中扮演重要角色。通过示例代码,读者能学习如何实现这些概念,提升项目开发效率和质量。
154 57
|
13天前
|
测试技术 虚拟化 云计算
GitHub高赞!速通Python编程基础手册,被玩出花了!
随着云时代的来临,Python 语言越来越被程序开发人员喜欢和使用,因为其不仅简单易学,而且还有丰富的第三方程序库和相应完善的管理工具。 从命令行脚本程序到 GUI程序,从图形技术到科学计算,从软件开发到自动化测试,从云计算到虚拟化,所有这些领域都有 Python 的身影。 今天给小伙伴们分享的这份手册采用以任务为导向的编写模式,全面地介绍了 Python 编程基础及其相关知识的应用,讲解了如何利用 Python 的知识解决部分实际问题。
GitHub高赞!速通Python编程基础手册,被玩出花了!

热门文章

最新文章