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

本文讲解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必备技巧之函数的使用详解

    Python必备技巧之函数的使用详解 什么是函数 函数是一段可重复使用的代码块,它可以接受参数,执行一定的逻辑处理,然后返回值。在Python中,函数的定义是通过 def 关键字来实现的。 函数的定义 函数的定义通常包括以下几个部分: def function_name(parameters): """ Docstring. 对…

    python 2023年6月2日
    00
  • Python实现网络端口转发和重定向的方法

    以下是“Python实现网络端口转发和重定向的方法”的完整攻略。 什么是端口转发和重定向 在介绍怎么用Python来实现网络端口转发和重定向之前,我们先来了解一下这两个概念。 端口转发 端口转发,也叫端口映射,是指将一个网络连接在发送时转向另外一台计算机或者另外一个端口的手段,从而实现不同计算机之间的互联互通。端口转发的作用在于将拥有公网IP的计算机映射为一…

    python 2023年6月3日
    00
  • 如何使用python获取现在的日期与时间

    如果想要使用Python来获取当前的日期和时间,可以使用Python内置的datetime模块和time模块来实现。 以下是使用datetime模块来获取当前日期和时间的示例代码: import datetime # 获取当前日期及时间 now = datetime.datetime.now() # 输出当前日期及时间 print("当前时间为:&…

    python 2023年6月2日
    00
  • Python中datetime常用时间处理方法

    Python中datetime常用时间处理方法 Python中datetime是常用的时间处理模块,主要提供时间日期的各种操作方法。在日常开发中,经常会用到各种时间处理、格式化时间等功能,本文将介绍一些Python中datetime常用的时间处理方法。 获取当前时间 获取当前时间可以使用datetime模块中的datetime类的now()方法,该方法返回当…

    python 2023年6月2日
    00
  • Python可视化工具如何实现动态图表

    下面我来详细讲解一下Python可视化工具如何实现动态图表的完整实例教程。 背景 在数据分析和可视化领域,动态图表是一种非常重要的展示方式,能够直观地展示数据随时间、位置等维度的变化趋势,同时吸引读者的注意力。Python作为一种流行的数据分析语言,自然也有许多可视化工具可以用来生成动态图表,如Matplotlib、Plotly、Bokeh等。 准备工作 首…

    python 2023年5月13日
    00
  • Python多进程写入同一文件的方法

    以下是详细讲解“Python多进程写入同一文件的方法”的完整攻略。 1. 多进程写入同一文件的问题 在Python中,多进程写入同文件时,会出现文件内容错乱、数据丢失等问题。这是因为多个进程同时写入同一文件时,会出现竞争条件,致数据不一致。 为了解决这个问题,我们需要使用一些技巧和工具来确保多进程写入同一文件的正确性和可靠性。 2. 解决方法 在Python…

    python 2023年5月14日
    00
  • python多进程 主进程和子进程间共享和不共享全局变量实例

    Python支持多进程的并发模型,其中主进程可以创建多个子进程,每个子进程都是独立运行的。在多进程编程中,共享变量和不共享变量是一个常见问题。对于共享变量,它们在主进程和子进程之间共享,而对于不共享变量,它们在各自的进程中都有自己的拷贝。下面我们就来详细讲解。 共享变量 通过共享内存Array共享变量 Python提供了共享内存(Array, Value, …

    python 2023年6月5日
    00
  • 如何使用Python查询某个列中的平均值?

    以下是如何使用Python查询某个列中的平均值的完整使用攻略。 步骤1:导入模块 在Python中,我们需要导入相应的模块来连接数据库和执行查询操作。以下是导入mysql-connector-python模块的基本语法: import mysql.connector 以下是导入psycopg2模块的基本语法: import psycopg2 步骤2:连接数据…

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