多任务UDP聊天器

python Socket网络编程 套接字(Socket)是计算机之间进行通信的一种约定。通过Socket,一台计算机可以接受其他计算机的数据,也可以向其他计算机发送数据。远程管理软件和黑客软件大多依赖于Socket来实现特定功能的,其包括两个部分:运行于服务器端称之为ServerSocket,运行于客户机端称之ClientSocket。 阅读详情

任务说明:

  • 编写一个有2个线程的程序
  • 线程1用来接收数据然后显示
  • 线程2用来检测键盘数据然后通过udp发送数据

import  socket
import threading


# 发送数据函数
def send_msg(udp_socket):
    send_content = input("请输入您要发送的数据:")
    send_data = send_content.encode("gbk")
    dest_ip = input("请输入对方的ip地址:")
    dest_port = int(input("请输入对方的端口号:"))
    # 发送数据
    udp_socket.sendto(send_data, (dest_ip, dest_port))

# 接收数据函数
def recv_msg(udp_socket):
    while True:
        # 接收数据
        recv_data, ip_port = udp_socket.recvfrom(1024)
        # 解码数据
        recv_content = recv_data.decode("gbk")
        print(recv_content, ip_port)

if __name__ == '__main__':
    # 创建socket
    udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    # 绑定端口
    udp_socket.bind(("", 8080))
    # 创建接收数据的线程
    recv_thread = threading.Thread(target=recv_msg, args=(udp_socket,))
    # 守护主线程
    recv_thread.setDaemon(True)
    recv_thread.start()

    while True:
        option = input("请输入功能选项1.发送 2.退出:")
        if option == '1':
            send_msg(udp_socket)
        elif option == '2':
            break

    # 关闭socket
    udp_socket.close()


python web03-线程-12-案例:多任务udp聊天器 python web03-线程-12-案例:多任务udp聊天器 import socket import threading def recv_msg(udp_socket): """接收数据并显示""" # 接收数据 while True: recv_data = udp_socket.recvfrom(1024) print(recv_data) def send_msg(udp_socket, dest_ip, dest_port): 阅读详情

相关推荐

GlobalMapper地形对比与方量计算实战:从两期数据到填挖方区域精准提取

本文详细介绍了使用GlobalMapper进行地形对比与方量计算的实战方法,从两期数据准备到填挖方区域精准提取。通过三步核心操作和实用技巧,帮助工程师高效完成土方平衡分析,提升工程预算精度。特别适用于河道整治、湿地修复等工程项目,大幅减少人工计算误差和时间成本。

weixin_28698059的博客 220

多任务版udp聊天器

import socket import threading def send_msg(udp_socket): """获取键盘数据,并将其发送给对方""" while True: # 1. 从键盘输入数据 msg = input("\n请输入要发送的数据:") # 2. 输入对方的ip地址 d...

weixin_30437337的博客 75

【物理模拟】PBD算法详解

参考MatthiaMuller的十分钟物理(他就是PBD算法的发明者)

beidou111的博客 9498

如何用Python实现多任务版的udp聊天器

这篇文章主要为大家详细介绍了Python实现多任务版的udp聊天器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 一、案例示例 二、案例说明 1、编写一个有2个线程的程序。 2、线程1用来接收数据然后显示。 3、线程2用来检测键盘数据然后通过udp发送数据。 三、参考代码 import socket import threading def send_msg(udp_socket): """获取键盘数据,并将其发送给对方""" w

Free雅轩的博客 298

Linux SMP系统多核启动机制详解

对称多处理(SMP)是现代操作系统支持多核并行计算的基础架构。其核心原理是通过引导处理器(BSP)初始化系统环境后,通过处理器间中断(IPI)机制唤醒应用处理器(AP)。在x86架构中,AP启动时处于实模式,需要特殊的trampoline代码完成保护模式切换和分页设置。这种设计既保证了系统初始化的正确性,又实现了多核并行处理的性能优势。理解SMP启动流程对优化系统启动速度和调试多核问题至关重要,特别是在云计算和嵌入式系统中,高效的SMP初始化能显著提升系统响应能力。本文以Linux内核为例,深入解析了从BS

weixin_35006125的博客 289

【福建dem】原始高程数据tif格式

DEM(Digital Elevation Model,数字高程模型)是一种地理信息系统中的关键数据集,它提供了地表地形的三维信息,通常用于分析地貌特征、模拟水文过程、规划建设、灾害预警等多个领域。这种数据对于地理分析非常有价值,例如,它可以用于计算坡度、坡向、地形粗糙度等地形特征,或者进行洪水模拟、地质灾害评估、太阳能辐射分析等。“福建dem原始高程数据tif格式”是研究和理解福建省地形地貌的重要资源,结合GIS工具,可以揭示丰富的地理信息,为科研、工程和决策提供有力支持。

鸿业远图科技 943

Python多线程学习及UDP多任务聊天器案例分享

简单地说,就是操作系统可以同时运行多个任务。单核CPU也能执行多任务。多任务优势:在多核或多,或支持Hyper-threading的CPU上使用多线程程序设计的好处是显而易见,即提高了程序的执行吞吐率。在单CPU单核的计算机上,使用,也可以把进程中负责I/O处理、人机交互而常被阻塞的部分与密集计算的部分分开来执行,编写专门的workhorse线程执行密集计算,从而提高了程序的执行效率。python默认单任务执行。

2401_82928104的博客 2100

告别环境配置烦恼:Docker容器化一站式搭建Zephyr RTOS开发环境

本文详细介绍了如何使用Docker容器化技术一站式搭建Zephyr RTOS开发环境,彻底解决环境配置不一致、依赖冲突等难题。通过预构建镜像、数据卷挂载和实战编译示例,帮助开发者快速获得隔离、一致且可复现的嵌入式开发环境,大幅提升开发效率和团队协作体验。

n8m7b6v5c4的博客 189

python udp聊天器线程多任务

线程案例:多任务版udp聊天器 说明 编写一个有2个线程的程序 线程1用来接收数据然后显示 线程2用来检测键盘数据然后通过udp发送数据 要求 实现上述要求 总结多任务程序的特点 参考代码: import socket import threading def send_msg(udp_socket): """获取键盘数据,并将其发送给对方""" while True: ...

lislislislislis的博客 271

【深度学习新浪潮】OpenClaw技术架构详解:从核心组件到生产级优化

OpenClaw 以三层解耦架构 + 四大核心模块为基础,实现了本地优先、易部署、易扩展、易优化的 AI 智能体平台。开发者可通过极简部署快速落地,再通过量化、缓存、并发、分布式等手段持续优化性能,适合从个人助理到企业级自动化的全场景应用。

专注:太空算力、AI infra、异构调度、大模型成本工程 2920

3. LangGraph快速入门

本示例中,我们将使用 Claude Sonnet 4.5 模型,并定义加法、乘法、除法工具。# 定义工具@toolArgs:"""@toolArgs:"""@toolArgs:"""# 为大模型绑定工具图的状态用于存储消息和大模型调用次数。LangGraph 中的状态在整个智能体执行过程中保持持久化。使用带的Annotated类型可以确保新消息追加到现有列表,而不是替换列表。模型节点用于调用大模型,并决定是否调用工具。return {],

Long_像风一样自由 842

python实现多人聊天udp_python实现的多任务版udp聊天器功能案例

本文实例讲述了python实现的多任务版udp聊天器。分享给大家供大家参考,具体如下:说明编写一个有2个线程的程序线程1用来接收数据然后显示线程2用来检测键盘数据然后通过udp发送数据要求实现上述要求总结多任务程序的特点参考代码:import socketimport threadingdef send_msg(udp_socket):"""获取键盘数据,并将其发送给对方"""while True...

weixin_42356378的博客 382

5大步骤!轻松玩转Dorisoy.Rigger:基于.NET Core 6、MAUI和Blazor的多数据库开发框架生成器

各位小伙伴,你们是否厌倦了每次项目启动都要从头配置数据库连接、编写重复的代码?今天,我们就来聊聊如何使用Dorisoy.Rigger这个强大的开发框架生成器,让你的.NET Core 6、MAUI和Blazor项目开发变得简单又高效!准备好迎接开发的新乐趣了吗?让我们一起开始吧!接下来,我们需要定义数据模型。假设我们有一个简单的用户表,包含ID、用户名和密码字段。在项目中创建一个新的类文件,命名为User.csset;set;set;这段代码定义了一个用户模型,其中包含了用户的ID、用户名和密码。

java专栏 1738

Python45_案例:多任务版UDP聊天器

from socket import * import threading def recv_msg(udp_socket): """ 接收数据并显示 :return: """ while True: recv_data, dest_addr = udp_socket.recvfrom(1024) #注意:recvfrom是等待接收,...

qq_34873298的博客 161

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

应用--------多任务版udp聊天器

案例:多任务版udp聊天器 说明 编写一个有2个线程的程序 线程1用来接收数据然后显示 线程2用来检测键盘数据然后通过udp发送数据 要求 实现上述要求 总结多任务程序的特点 参考代码: import socket import threading def send_msg(udp_socket): """获取键盘数据,并将其发送给对方""" while Tr...

zenghongju的博客 430

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

案例:多任务udp聊天器

收和发不能同时进行 通过多线程来解决 import socket import threading def recv_msg(udp_socket): """接收数据并显示""" # 接收数据 while True: recv_data = udp_socket.recvfrom(1024) print(recv_d...

moonlightpeng的博客 245

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

多任务udp聊天器

import socket import threading def send_msg(udp_socket, dest_ip, dest_port): while True: send_data = input(“输入要发送的数据:”) udp_socket.sendto(send_data.encode(“utf-8”), (dest_ip, dest_port)) def recv_msg(...

Doggie_IT的博客 259

python 实现多任务udp聊天器

相关代码 import socket import threading def recv_msg(udp_socket): """接收数据并显示""" # 接收数据 while True: recv_data = udp_socket.recvfrom(1024) print(recv_data) def send_msg(udp_...

weixin_44796332的博客 204

Python udp协议 之 多任务聊天器

这里运用 python 多任务-线程 threading 模块来实现 udp 多任务聊天 代码如下: # coding=utf-8 import socket import threading def recv_msg(udp_socket): """接收数据并显示""" # 接收数据 while True: recv_msg, recv_add...

Nick.Peng's Blogs 760

udp-多任务聊天器

import socket import threading def recv_msg(udp_socket): """接收数据""" while True: recv_data = udp_socket.recvfrom(1024) print(recv_data[0].decode("gbk")) def send_msg(udp_socke...

qq_37738024的博客 169

【多任务线程高级day10】案例:多任务版udp聊天器+说明+要求+参考代码

文章目录案例:多任务版udp聊天器说明要求参考代码: 案例:多任务版udp聊天器 说明 编写一个有2个线程的程序 线程1用来接收数据然后显示 线程2用来检测键盘数据然后通过udp发送数据 要求 实现上述要求 总结多任务程序的特点 参考代码: import socket import threading def send_msg(udp_socket): """获取键盘...

汪雯琦的博客 479
下一篇: 利用UDP在局域网中发送广播
anyiVIP
博客等级 码龄9年 39粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值