首页 > 编程语言 >Python网络编程实战案例

Python网络编程实战案例

时间:2024-11-23 16:01:30浏览次数:6  
标签:实战 __ socket Python 编程 server 服务器 data addr

在当今信息技术高速发展的时代,网络编程成为了软件开发中不可或缺的一部分。Python,以其简洁的语法和强大的功能,成为了网络编程的热门选择。本文将通过几个实战案例,展示Python在网络编程中的应用,包括TCP服务器和客户端的创建、UDP通信、HTTP请求以及多线程服务器的实现。

1. TCP服务器和客户端

1.1 TCP服务器

服务器的基本任务是监听客户端的连接请求,并处理这些请求。以下是一个简单的TCP服务器示例,它使用socket模块来创建一个监听特定端口的服务器,并接受客户端的连接请求。

import socket

def start_server(host='127.0.0.1', port=65432):
    with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
        s.bind((host, port))
        s.listen()
        print("Server is listening...")
        conn, addr = s.accept()
        with conn:
            print('Connected by', addr)
            while True:
                data = conn.recv(1024)
                if not data:
                    break
                conn.sendall(data)

if __name__ == "__main__":
    start_server()

1.2 TCP客户端

客户端的任务是连接到服务器,并发送或接收数据。以下是一个简单的TCP客户端示例,它连接到服务器并发送一条消息。

import socket

def connect_to_server(host='127.0.0.1', port=65432):
    with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
        s.connect((host, port))
        s.sendall(b'Hello, world')
        data = s.recv(1024)
    print('Received', repr(data))

if __name__ == "__main__":
    connect_to_server()

2. UDP通信

UDP是一种无连接的协议,它不保证数据的可靠传输,但适用于需要快速传输的场景,如视频流和在线游戏。以下是一个UDP服务器和客户端的示例。

2.1 UDP服务器

import socket

def start_server(host='127.0.0.1', port=65432):
    with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as s:
        s.bind((host, port))
        print("Server is listening...")
        while True:
            data, addr = s.recvfrom(1024)
            print("Received from:", addr)
            s.sendto(data, addr)

if __name__ == "__main__":
    start_server()

2.2 UDP客户端

import socket

def connect_to_server(host='127.0.0.1', port=65432):
    with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as s:
        s.sendto(b'Hello, UDP server!', (host, port))
        data, addr = s.recvfrom(1024)
    print('Received', repr(data), 'from', addr)

if __name__ == "__main__":
    connect_to_server()

3. HTTP请求

Python的requests库简化了HTTP请求的操作,无需直接操作Socket。下面是一个获取网页内容的例子。

import requests

def fetch_webpage(url="http://example.com"):
    response = requests.get(url)
    return response.text

if __name__ == "__main__":
    print(fetch_webpage())

4. 多线程服务器

为了同时处理多个客户端连接,可以使用多线程。以下是一个多线程TCP服务器的示例。

import socket
import threading

def handle_client(conn, addr):
    print(f"Connected by {addr}")
    while True:
        data = conn.recv(1024)
        if not data:
            break
        conn.sendall(data)
    conn.close()

def start_server(host='127.0.0.1', port=65432):
    with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
        s.bind((host, port))
        s.listen()
        print("Server is listening...")
        while True:
            conn, addr = s.accept()
            threading.Thread(target=handle_client, args=(conn, addr)).start()

if __name__ == "__main__":
    start_server()

通过这些实战案例,我们可以看到Python在网络编程中的灵活性和强大功能。无论是构建简单的客户端和服务器,还是处理复杂的网络通信,Python都能提供简单而有效的解决方案。

标签:实战,__,socket,Python,编程,server,服务器,data,addr
From: https://blog.csdn.net/2401_87195067/article/details/143963104

相关文章

  • 重生之我在Python中用for循环实现九九乘法表
    没错,我又重生了,重生在一个风平浪静的下午,与以往不同,我好像学会了一个新技能------for循环,不同以往,又紧密相连,我双目紧闭,应天地之号召,挥手拂袖便显仙法#控制列的表达式,共9列foriinrange(1,10):#每行共有1到i个算式forjinrange(1,i+1):#乘法表达......
  • 2024年华为OD机试真题-数组拼接-Python-OD统一考试(E卷)
    最新华为OD机试考点合集:华为OD机试2024年真题题库(E卷+D卷+C卷)_华为od机试题库-CSDN博客     每一题都含有详细的解题思路和代码注释,精选c++、JAVA、Python三种语言解法。帮助每一位考生轻松、高效刷题。订阅后永久可看,发现新题及时跟新。题目描述现在有多组整数数组,需......
  • 项目实战:基于深度学习的人脸表情识别系统设计与实现
    大家好,人脸表情识别是计算机视觉领域中的一个重要研究方向,它涉及到对人类情感状态的理解和分析。随着深度学习技术的发展,基于深度学习的人脸表情识别系统因其高精度和强大的特征学习能力而受到广泛关注。本文旨在探讨基于深度学习的人脸表情识别系统的设计与实现,从数据处理、模......
  • 代理ip python写法
    先封装importrequestsdefget_proxy():url="http://api1.xxxxxxxxxx0&format=txt"response=requests.get(url)print(response.status_code)print(response.text)ip=response.textreturnipif__name__=='......
  • python毕设毕业生就业统计系统程序+论文
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景关于毕业生就业统计系统的研究,现有研究主要以就业数据的宏观统计为主,专门针对Python实现毕业生就业统计系统的研究较少。在国内外,就业......
  • 机器学习实战——基于CART决策树实现葡萄酒品质预测(附完整代码和可视化)
    机器学习实战——基于CART决策树实现葡萄酒品质预测(附完整代码和可视化)关于作者作者:小白熊作者简介:精通c#、Halcon、Python、Matlab,擅长机器视觉、机器学习、深度学习、数字图像处理、工业检测识别定位、用户界面设计、目标检测、图像分类、姿态识别、人脸识别、语义分......
  • js逆向实战之某二手平台请求参数加密逻辑
    声明:本篇文章仅用于知识分享,不得用于其他用途网址:https://www.goofish.com/加密逻辑随便点击一个模块,看触发的数据包。再选择一个模块,看哪些参数会变化。比较一下得知t和sign的值会变化。请求数据中的machId是根据所选模块变化的。主要关注sign的加密逻辑,搜索请求参数中......
  • 【图解python】 控制流与循环语句
    【图解python】 控制流与循环语句在这篇文章中,我们将介绍Python中的 控制流 和 循环语句,并通过丰富的示例来帮助初学者掌握这些基本概念。1.Python控制流基础1.1什么是控制流控制流是指程序根据条件判断来选择执行路径的过程。通过控制流,我们可以让程序根据不同......
  • CEF127编译指南 Windows篇-安装Git和Python(三)
    1.引言在前面的文章中,我们已经完成了VisualStudio2022的安装和配置。接下来,我们需要安装两个同样重要的工具:Git和Python。这两个工具在CEF的编译过程中扮演着关键角色。Git负责管理和获取源代码,而Python则用于运行各种编译脚本和自动化任务。正确安装这两个工具将为我......
  • Python操作neo4j库py2neo使用(一)
    Python操作neo4j库py2neo使用(一)安装(只用于测试)docker-compose.yml文件version:'3.8'services:neo4j:image:neo4j:5.6.0-enterprise#商业版镜像hostname:neo4jcontainer_name:neo4jports:-"7474:7474"-"7687:7687&......