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. 处理好异常情况,确保程序的健壮性。

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

相关文章
|
1天前
|
开发者 Python
Python入门:8.Python中的函数
### 引言 在编写程序时,函数是一种强大的工具。它们可以将代码逻辑模块化,减少重复代码的编写,并提高程序的可读性和可维护性。无论是初学者还是资深开发者,深入理解函数的使用和设计都是编写高质量代码的基础。本文将从基础概念开始,逐步讲解 Python 中的函数及其高级特性。
Python入门:8.Python中的函数
|
1天前
|
存储 索引 Python
Python入门:6.深入解析Python中的序列
在 Python 中,**序列**是一种有序的数据结构,广泛应用于数据存储、操作和处理。序列的一个显著特点是支持通过**索引**访问数据。常见的序列类型包括字符串(`str`)、列表(`list`)和元组(`tuple`)。这些序列各有特点,既可以存储简单的字符,也可以存储复杂的对象。 为了帮助初学者掌握 Python 中的序列操作,本文将围绕**字符串**、**列表**和**元组**这三种序列类型,详细介绍其定义、常用方法和具体示例。
Python入门:6.深入解析Python中的序列
|
1天前
|
程序员 UED Python
Python入门:3.Python的输入和输出格式化
在 Python 编程中,输入与输出是程序与用户交互的核心部分。而输出格式化更是对程序表达能力的极大增强,可以让结果以清晰、美观且易读的方式呈现给用户。本文将深入探讨 Python 的输入与输出操作,特别是如何使用格式化方法来提升代码质量和可读性。
Python入门:3.Python的输入和输出格式化
|
1天前
|
缓存 算法 数据处理
Python入门:9.递归函数和高阶函数
在 Python 编程中,函数是核心组成部分之一。递归函数和高阶函数是 Python 中两个非常重要的特性。递归函数帮助我们以更直观的方式处理重复性问题,而高阶函数通过函数作为参数或返回值,为代码增添了极大的灵活性和优雅性。无论是实现复杂的算法还是处理数据流,这些工具都在开发者的工具箱中扮演着重要角色。本文将从概念入手,逐步带你掌握递归函数、匿名函数(lambda)以及高阶函数的核心要领和应用技巧。
Python入门:9.递归函数和高阶函数
|
1天前
|
存储 SQL 索引
Python入门:7.Pythond的内置容器
Python 提供了强大的内置容器(container)类型,用于存储和操作数据。容器是 Python 数据结构的核心部分,理解它们对于写出高效、可读的代码至关重要。在这篇博客中,我们将详细介绍 Python 的五种主要内置容器:字符串(str)、列表(list)、元组(tuple)、字典(dict)和集合(set)。
Python入门:7.Pythond的内置容器
|
1天前
|
存储 Linux iOS开发
Python入门:2.注释与变量的全面解析
在学习Python编程的过程中,注释和变量是必须掌握的两个基础概念。注释帮助我们理解代码的意图,而变量则是用于存储和操作数据的核心工具。熟练掌握这两者,不仅能提高代码的可读性和维护性,还能为后续学习复杂编程概念打下坚实的基础。
Python入门:2.注释与变量的全面解析
|
1天前
|
知识图谱 Python
Python入门:4.Python中的运算符
Python是一间强大而且便捷的编程语言,支持多种类型的运算符。在Python中,运算符被分为算术运算符、赋值运算符、复合赋值运算符、比较运算符和逻辑运算符等。本文将从基础到进阶进行分析,并通过一个综合案例展示其实际应用。
|
7月前
|
网络协议 安全 Java
Java中的网络编程:Socket编程详解
Java中的网络编程:Socket编程详解
|
7月前
|
Java API 网络安全
Java网络编程入门
Java网络编程入门
|
7月前
|
网络协议 安全 Java
Java中的网络编程:Socket编程详解
Java中的网络编程:Socket编程详解

热门文章

最新文章

推荐镜像

更多