python网络编程示例(客户端与服务端)

yizhihongxing

本文讲解Python网络编程的示例代码,包含客户端和服务端示例。

环境

在开始之前,确保你已经安装好Python和所需的库。对于windows系统,你可以使用Python自带的pip安装命令行:

python -m pip install [package]

对于Linux/MacOS系统,你可以使用系统自带的包管理器。例如:

sudo apt-get install python3
sudo apt-get install python3-pip

在本文示例中,我们使用Python 3.8.5版本和socket库。

客户端示例

客户端是用于向服务端发送请求的软件。下面是一个简单的Python客户端示例,它会向服务端发送一条消息并等待响应:

import socket

HOST = 'localhost'
PORT = 8000

def client():
    with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
        s.connect((HOST, PORT))

        while True:
            message = input('Enter message: ')
            s.sendall(message.encode('utf-8'))

            data = s.recv(1024)
            print(data.decode('utf-8'))

在这个示例中,我们使用了socket库的AF_INETSOCK_STREAM两个常量来创建套接字。AF_INET表示使用IPv4网络协议,SOCK_STREAM表示使用TCP协议。这个套接字通过connect()函数与服务端建立连接。客户端通过input()函数从标准输入获取用户输入,将输入的字符串通过套接字的sendall()函数发送到服务端,接收到服务端的回应后通过recv()函数获取响应内容。

服务端示例

服务端是用于接收客户端请求并响应的软件。下面是一个简单的Python服务端示例,它会接收客户端发送的消息并回复一条响应:

import socket

HOST = 'localhost'
PORT = 8000

def server():
    with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
        s.bind((HOST, PORT))
        s.listen()

        conn, addr = s.accept()
        with conn:
            print('Connected by', addr)
            while True:
                data = conn.recv(1024)
                if not data:
                    break
                conn.sendall(('Server received: ' + data.decode('utf-8')).encode('utf-8'))

在这个示例中,我们使用了socket库的AF_INETSOCK_STREAM两个常量来创建套接字。AF_INET表示使用IPv4网络协议,SOCK_STREAM表示使用TCP协议。这个套接字通过bind()函数绑定主机和端口号,并使用listen()函数监听连接请求,接收到来自客户端的连接请求后通过accept()函数建立连接。服务端通过recv()函数获取来自客户端的请求内容,处理后通过sendall()函数回传响应内容。

示例应用

一个常见的网络编程应用就是实现聊天室功能。下面给出一个简单的聊天室示例代码:

import socket
import threading

HOST = 'localhost'
PORT = 8000
clients = []

def broadcast(message):
    for client in clients:
        client.sendall(message)

def handle_client(conn, addr):
    with conn:
        print('Connected by', addr)
        clients.append(conn)

        while True:
            data = conn.recv(1024)
            if not data:
                break
            broadcast(data)

        clients.remove(conn)

def server():
    with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
        s.bind((HOST, PORT))
        s.listen()

        while True:
            conn, addr = s.accept()
            thread = threading.Thread(target=handle_client, args=(conn, addr))
            thread.start()

server()

这个聊天室示例中,当客户端发送消息时,服务器会向所有客户端广播这个消息。

总结

本文详细讲解了Python网络编程的示例代码,包含客户端和服务端应用。你可以根据这些代码在本机或者远程创建一个TCP服务端和客户端应用,也可以进一步深入学习网络编程知识,实现更加复杂的应用。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python网络编程示例(客户端与服务端) - Python技术站

(0)
上一篇 2023年5月30日
下一篇 2023年5月30日

相关文章

  • python使用requests实现发送带文件请求功能

    以下是关于Python使用requests实现发送带文件请求功能的攻略: Python使用requests实现发送带文件请求功能 requests是一个流行的HTTP库,用于向Web服务器发送HTTP请求和接收响应。以下是Python使用requests实现发送带文件请求功能的攻略: 发送带有文件的HTTP请求 以下是使用requests库发送带有文件的HT…

    python 2023年5月14日
    00
  • python集合用法实例分析

    以下是“Python集合用法实例分析”的完整攻略。 1. 集合的概述 在Python中,集合是一种无序的、可变的数据类型,用于存储一组不重复的元素。集中的素是任意类型的数据,例如数字、字符串、元组等。集合是可变的,可以动态地添加、删除和修改素。下面介绍Python集合的相关知识点。 2. 集合的基本操作 2.1 创建集合 在Python中,可以使用花括号{}…

    python 2023年5月13日
    00
  • 如何在 Python 中通过 SFTP 检查 S_ISREG 以获取 Windows NTFS 文件?

    【问题标题】:How to check S_ISREG for a Windows NTFS file over SFTP in Python?如何在 Python 中通过 SFTP 检查 S_ISREG 以获取 Windows NTFS 文件? 【发布时间】:2023-04-02 10:49:01 【问题描述】: 我正在连接到 SFTP 服务器 (NTFS…

    Python开发 2023年4月8日
    00
  • python 通过xml获取测试节点和属性的实例

    当我们进行软件测试时,常常需要读取XML文件中的测试节点和属性。Python提供了多种库来处理XML文件,其中最常用的是ElementTree库。接下来,我将为您提供一个完整的攻略来使用Python通过XML获取测试节点和属性。 第一步:导入ElementTree库 使用Python处理XML文件的第一步是导入ElementTree库。可以通过以下代码来导入…

    python 2023年5月14日
    00
  • odoo wizard界面显示带复选框列表及勾选数据获取

    实践环境 Odoo 14.0-20221212 (Community Edition) 需求描述 如下图(非实际项目界面截图,仅用于介绍本文主题),打开记录详情页(form视图),点击某个按钮(图中的”选取ffers”按钮),弹出一个向导(wizard)界面,并将详情页中内联tree视图(”Offers” Tab页)的列表记录展示到向导界面,且要支持复选框,…

    python 2023年4月22日
    00
  • Python下利用BeautifulSoup解析HTML的实现

    Python下利用BeautifulSoup解析HTML的实现 BeautifulSoup是Python中一个非常流行的HTML和XML解析库,可以帮助我们更方便地解析网页。本文将介绍如何使用BeautifulSoup解析HTML文档,并提供两个示例。 安装BeautifulSoup 在使用BeautifulSoup之前,需要先安装它。以下是一个示例代码,演…

    python 2023年5月15日
    00
  • Python画图高斯分布的示例

    以下是详细讲解Python画图高斯分布的示例的完整攻略: 1. 准备工作 首先,我们需要导入相关的Python库和模块,包括numpy和matplotlib等。在命令行中输入以下命令: import numpy as np import matplotlib.pyplot as plt 这样就可以在程序中使用numpy和matplotlib库中的函数和方法了…

    python 2023年5月19日
    00
  • Python实现简单层次聚类算法以及可视化

    Python实现简单层次聚类算法以及可视化 层次聚类是一种常用的聚类算法,它可以将数据集分成不同的层结构。本文中,我们将介绍如何使用Python实现简单层次聚类法以及可视化。我们将分为以下几个步骤: 加载数据集 数据预处理 定义层次聚类法 可视化聚类结果 示例说明 步骤1:加载数据集 在实现层次聚类算法之前,需要加载数据集。在这个例子中,我们将使用Iris数…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部