python udp创建addr_一篇文章搞定Python 网络编程之UDP协议

基于UDP协议的socket

PS:udp是无连接的,先启动那一端都不会报错

server端

import socket  # 导入socket模块udp_sk = socket.socket(type=socket.SOCK_DGRAM)  # 创建一个服务器套接字udp_sk.bind(('127.0.0.1', 8080))  # 绑定服务器套接字msg, addr = udp_sk.recvfrom(1024)  # 接收客户端信息print(msg)  # 输出客户端的信息udp_sk.sendto(b'hi', addr)  # 向客户端发送信息udp_sk.close()  # 关闭服务器套接字

client端

import socketsk = socket.socket(type=socket.SOCK_DGRAM)ip_port = ('127.0.0.1', 8080)udp_sk = sk.sendto(b'hello', ip_port)msg, addr = udp_sk.recvfrom(1024)print(msg.decode('utf-8'))

QQ聊天

server端

import socketip_port = ('127.0.0.1', 8080)udp_server_sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)udp_server_sock.bind(ip_port)while True:    qq_msg, addr = udp_server_sock.recvfrom(1024)    print('来自%s:%s' % (str(addr), qq_msg.decode('utf-8')))    back_msg = input('回复消息:').strip()    udp_server_sock.sendto(back_msg.encode('utf-8'), addr)

client端

import socketBUFSIZE = 1024udp_client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)qq_name_dic = {'路人甲': ('127.0.0.1', 8080),               '路人乙': ('127.0.0.1', 8080),               '路人丙': ('127.0.0.1', 8080)}while True:    qq_name = input('请选择聊天对象,输入q结束程序:').strip()    if qq_name == 'q': break    while True:        msg = input('请输入消息,回车发送,输入q结束和他的聊天:').strip()        if msg == 'q': break        if not msg or not qq_name or qq_name not in qq_name_dic: continue        udp_client_socket.sendto(msg.encode('utf-8'), qq_name_dic[qq_name])        msg, addr = udp_client_socket.recvfrom(BUFSIZE)        print('来自 %s 的一条消息:%s'%(str(addr), msg.decode('utf-8')))udp_client_socket.close()

时间服务器

server端

import socketimport timesk = socket.socket()sk.bind(('127.0.0.1', 8090))sk.listen()while True:    conn, addr = sk.accept()    while True:        ret = conn.recv(1024).decode('utf-8')        time.sleep(1)        new_time = time.strftime(ret, time.localtime(time.time()))        conn.send(new_time.encode('utf-8'))

client端

import socketsk = socket.socket()sk.connect(('127.0.0.1', 8090))while True:    sk.send('%Y-%m-%d %X'.encode('utf-8'))    msg = sk.recv(1024)    print('' + str(msg.decode('utf-8')), end='', flush=True)

socket参数的详解

socket.socket(family=AF_INET,type=SOCK_STREAM,proto=0,fileno=None)

创建socket对象的参数说明

7538533c59a16fb3d228cf8b80b2d49f.png

#网络传输##网络##Python##Python基础##科技新星创作营#

bf1d5d99e030c458a020a00d7ad4bb06.png
b63c5d9f80387765770baf7b6d734cfe.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/528437.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

客制化键盘编程_客制化键盘如何入坑?

首先,玩客制化键盘之前你得了解一些键盘相关的知识。比如键盘的轴体大致分为:线性轴、段落轴、声音轴。线性轴主要是类红轴,静音轴两大类。段落轴主要是类茶轴,类hp轴两大类。声音轴就是类青轴和类box白轴两大类。这些类别搞清楚之…

java开心消消乐代码_Vue实现开心消消乐游戏算法

摘要:这篇Vue栏目下的“Vue实现开心消消乐游戏算法”,介绍的技术点是“开心消消乐、Vue、开心、游戏、算法、实现”,希望对大家开发技术学习和问题解决有帮助。之前做过一个算法题,算法要求就是写一个开心消消乐的逻辑算法&#x…

不能启动u盘 uefi_不知道怎么进入主板设置U盘启动,试试这些方式

一个正常运行的电脑,你可能安装的是Windows 或 Linux,但无论你是选择哪个系统,现代个人电脑都是绕不开的BIOS/UEFI的。通过U盘安装系统,你需要BIOS/UEFI来修改启动项。启动U盘,移动硬盘上的Windows to Go,你…

python弹出框多一个空白框_Selenium+python3 应对多个弹出框存在(alert_is_present)判断和处理...

from selenium.webdriver.support import expected_conditions as ECfrom selenium.common.exceptions import UnexpectedAlertPresentException#存在弹窗处理方法一 :EC.alert_is_present()(driver)检测是否存在弹窗try:WebDriverWait(driver, 10).until(EC.title_…

4 插件模块_设计师必备的ps插件推荐

Photoshop可以说是每个设计师都必须会用的设计工具之一了。为了设计需求,大家会在Photoshop里搭配一些PS插件来使用,提高工作效率。这篇文章就为大家整理了做设计的最佳插件,一起来看看吧。ps设计助理(高效设计ps插件)…

linux syslog 删除文件_Linux没有当心删除日记文件syslog怎样办

体系运用暂了须要对日记文件的内容停止清算,但有时果为大意而将日记文件给增除了了,而没有是革除日记内容,逢到那种状况该若何解决呢?其真增除了的日记文件syslog是能够规复的,随小编去看看吧。上面以Unbutu体系为例&a…

苹果电脑更改sd卡只读_SD卡变为只读系统

2.使用用fsck – y 来修复文件系统转自:http://blog.chinaunix.net/uid-20753645-id-1877931.html问题:将上述这些存储设备插入USB端口或读卡设备后,Ubuntu系统会自动mount这些设备到一个挂载点并在桌面上显示访问图标。但是某些情况下&#…

arraylist扩容是创建新数组吗 java_arraylist扩容机制要怎么实现?arraylist怎么扩容...

ArrayList大家都知道了吧,这是一个动态数组。以java语言来说,数组是定长的,在被创建之后就不能被加长或缩短了,因此,了解它的扩容机制对使用它尤为重要。下面,我们就一起来看看它的扩容机制是怎么实现的吧。…

jpa 动态sql拼接_jpa 如何优雅的实现动态sql

动态语言注解import www.ijava.com.entity.User;/** (1)动态语言注解对于创建动态的查的语言。MyBatis提供了多个注解如:e68a843231313335323631343130323136353331333365656563InsertProvider,UpdateProvider,DeleteProvider和SelectProvider,这些都是建…

广联达2018模板算量步骤_广联达钢结构算量软件可以和广联达量筋合一GTJ2018互导吗?...

钢结构软件和量筋合一软件互导https://www.zhihu.com/video/1164108225778741248钢结构软件和量筋合一软件互导一、问题广联达钢结构算量软件可以和广联达量筋合一GTJ2018互导吗?二、合理答案可以,但是对软件版本有要求。需要广联达钢结构算量软件版本在…

安卓beforetextchanged_安卓onTextChanged参数解释及实现EditText字数监听 Editable使用

尊重原作者:此篇文章是借鉴原作者地址 的博文 并进行修改和增加补充说明,我只是补充和修改:我感觉这篇文章经过我的补充 市面多少文本操作变化 你都知道怎么做了.并且感觉是非常详细关于 android 文本编辑框的文本变化 并且通俗易懂(内含动态图),为了大家方便查看 我这里复制作…

mysql存储过程捕获错误处理_mysql存储过程之异常处理篇

mysql存储过程也提供了对异常处理的功能:通过定义HANDLER来完成异常声明的实现语法如下:DECLARE handler_type HANDLER FOR condition_value[,...] sp_statement handler_type: CONTINUE | EXIT condition_value: SQLSTATE [VALUE] sqlstate_value | con…

memlock mysql_mysql配置详解(不断更新)

1. back_log指定MySQL可能的连接数量。当MySQL主线程在很短的时间内得到非常多的连接请求,该参数就起作用,之后主线程花些时间(尽管很短)检查连接并且启动一个新线程。back_log参数的值指出在MySQL暂时停止响应新请求之前的短时间内多少个请求可以被存在…

mysql c2_Mysql具有C2级安全性

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼those who are authorized for audit data. The TCB shall be able to record the following types of events: use of identificationand authentication mechanisms, introduction or objects into a users address space (e.g.,…

mysql orm c语言_【译】Simple MySQL ORM for C

一直不知道有ORM这种东西,直到和 海坡 交流后才接触。在项目中,需要将数据存储到数据库中,首先想到的是生成各种raw SQL的解决方法。但随着项目的进展,发现它很不灵活。譬如可能因为有新的需求,在数据库student表中添加…

ruby mysql 占位符_ruby操作常用数据库

使用Ruby DBI模块目录Ruby DBI模块为ruby程序访问数据库提供了一个与数据库无关的接口,就像perl的DBI模块一样。这篇文章将讲述如何编写基于DBI的ruby程序。这篇文章是对DBI规范文档(specification documents)的补充,而不是要替代规范文档,更…

threejs获取模型坐标_Threejs倒影实现解析

倒影是在自然界中非常常见的一种现象,例如水面倒影、镜子。我们都知道,眼睛之所以能够看到某个物体,是因为物体本身能够发光或者物体能够反射其它的物体所发的光,这些光进入到我们的眼里就形成了该物体影像。倒影形成也是一种光学…

aws java mysql_java - AWS EC2 / MySql - spring boot无法从datasource确定jdbc url - 堆栈内存溢出...

我有一个简单的Spring Boot应用程序,我试图在基于Amazon AMI的Amazon EC2实例上部署。 它使用MySql数据库(版本8.0.15)。我在AWS上创建了数据库,当我从本地系统指向它的配置时,它可以工作。 我也可以从MySql Workbench访问它。但是当我将Spri…

debian 删除mysql数据库_Debian中完全卸载MySQL的方法

作者: 字体:[增加 减小] 类型:转载这篇文章主要介绍了Debian中完全卸载MySQL的方法,同时介绍了清理方法,可以做到彻底卸载mysql,需要的朋友可以参考下之前服务器上配置测试用的服务环境,我偷懒顺手用网上现成的脚本进行安装&#…

python123外汇兑换计算器_Python 3.x--使用re模块,实现计算器运算实例

1 importre23 #乘除运算处理,可以处理不含括号的加减和乘除函数(只处理乘除)4 defmulti_and_divi(arg):5 #传入参数为列表,如:[3*2-1*9/3,0]6 val arg[0]7 #对字符串进行乘除匹配:如3*2-1*9/3,就匹配:3*28 …