Python 3 udp套接字

TCP是建立可靠连接,并且通信双方都可以以流的形式发送数据。相对TCP,UDP则是面向无连接的协议

使用UDP协议时,不需要建立连接,只需要知道对方的IP地址和端口号,就可以直接发数据包。但是,能不能到达并不清楚。

虽然用UDP传输数据不可靠,但它的优点是和TCP比,速度快,对于不要求可靠到达的数据,就可以使用UDP协议

基于UDP的套接字 udp是无链接的,先启动哪一端都不会报错

udp服务端

ss = socket()   #创建一个服务器的套接字

ss.bind()       #绑定服务器套接字

inf_loop:       #服务器无限循环

     cs = ss.recvfrom()/ss.sendto() # 对话(接收与发送)

ss.close()                          # 关闭服务器套接字

udp客户端

cs = socket()   # 创建客户套接字

comm_loop:      # 通讯循环

    cs.sendto()/cs.recvfrom()   # 对话(发送/接收)

cs.close()                      # 关闭客户套接字

udp套接字简单示例

from socket import *

udp_server=socket(AF_INET,SOCK_DGRAM)

udp_server.bind(('127.0.0.1',8080))

while True:

    data,client_addr=udp_server.recvfrom(1024)

    print(data,client_addr)

    udp_server.sendto(data.upper(),client_addr)

服务端

from socket import *

udp_client=socket(AF_INET,SOCK_DGRAM)

while True:

    msg=input('>>: ').strip()

    udp_client.sendto(msg.encode('utf-8'),('127.0.0.1',8080))

    data,server_addr=udp_client.recvfrom(1024)

print(data.decode('utf-8'))

客户端

基于udp套接字不会粘包

from socket import *

udp_server=socket(AF_INET,SOCK_DGRAM)

udp_server.bind(('127.0.0.1',8080))

data1,client_addr=udp_server.recvfrom(1)  # windows 系统会报异常 linux 系统不会报异常

print('data1',data1)

data2,client_addr=udp_server.recvfrom(1024)

print('data2',data2)

服务端

from socket import *

udp_client=socket(AF_INET,SOCK_DGRAM)

udp_client.sendto('hello'.encode('utf-8'),('127.0.0.1',8080))

udp_client.sendto('world'.encode('utf-8'),('127.0.0.1',8080))

客户端

udp套接字的并发

import socketserver

class MyUDPhandler(socketserver.BaseRequestHandler):

    def handle(self):

        print(self.request)

        self.request[1].sendto(self.request[0].upper(),self.client_address)

if __name__ == '__main__':

    s=socketserver.ThreadingUDPServer(('127.0.0.1',8080),MyUDPhandler)

    s.serve_forever()

服务端

from socket import *

udp_client=socket(AF_INET,SOCK_DGRAM)

while True:

    msg=input('>>: ').strip()

    udp_client.sendto(msg.encode('utf-8'),('127.0.0.1',8080))

    data,server_addr=udp_client.recvfrom(1024)

    print(data.decode('utf-8'))

客户端

Python 3 udp 套接字的更多相关文章

  1. 【Python网络编程】利用Python进行TCP、UDP套接字编程

    之前实现了Java版本的TCP和UDP套接字编程的例子,于是决定结合Python的学习做一个Python版本的套接字编程实验. 流程如下: 1.一台客户机从其标准输入(键盘)读入一行字符,并通过其套接 ...

  2. Python之路(第三十二篇) 网络编程:udp套接字、简单文件传输

    一.UDP套接字 服务端 # udp是无链接的,先启动哪一端都不会报错 # udp没有链接,与tcp相比没有链接循环,只有通讯循环 server = socket.socket(socket.AF_I ...

  3. python UDP套接字通信

    UDPserver.py import socket #导入套接字模块 s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) # - socket.A ...

  4. python开发socket套接字:粘包问题&udp套接字&socketserver

    一,发生粘包 服务器端 from socket import * phone=socket(AF_INET,SOCK_STREAM) #套接字 phone.setsockopt(SOL_SOCKET, ...

  5. 4月23日 python学习总结 套接字UDP和 操作系统理论,多道理论

    一.套接字UDP udp是无链接的,先启动哪一端都不会报错 UDP(user datagram protocol,用户数据报协议)是无连接的,面向消息的,提供高效率服务.不会使用块的合并优化算法,, ...

  6. 探索UDP套接字编程

    UDP和TCP处于同一层网络模型中,也就是运输层,基于二者之上的应用有很多,常见的基于TCP的有HTTP.Telnet等,基于UDP有DNS.NFS.SNMP等.UDP是无连接,不可靠的数据协议服务, ...

  7. 【转】 探索UDP套接字编程

    UDP和TCP处于同一层网络模型中,也就是运输层,基于二者之上的应用有很多,常见的基于TCP的有HTTP.Telnet等,基于UDP有DNS.NFS.SNMP等.UDP是无连接,不可靠的数据协议服务, ...

  8. 【nodejs】创建udp套接字的类型参数的含义

    nodejs在创建udp套接字的时候,需要传入一个类型参数.有两种类型参数可供选择:udp4和udp6.udp4对应的就是ipv4,udp6对应的是ipv6.

  9. JavaTCP和UDP套接字编程

    在我们刚开始入门Java后端的时候可能你会觉得有点复杂,包含了很多杂七杂八的知识,例如文件上传下载,监听器,JDBC,请求重定向,请求转发等等(当然也没有很多),但是我们自己真正的去开发一个小型网站( ...

随机推荐

  1. 代码设置UIButton文字、图片位置

    假设有按钮rButton的 imageEdgeInsets和contentEdgeInsets可以设置按钮的标题和图片的位置,如下代码,设置标题居右 NSString * rBtnTitle = @& ...

  2. 百度js 获取定位城市名称

    首先引用百度 script <script type="text/javascript" src="http://api.map.baidu.com/api?typ ...

  3. Struts2学习之拦截器

    © 版权声明:本文为博主原创文章,转载请注明出处 拦截器: - Struts2大多数核心功能都是通过拦截器实现的,每个拦截器完成某项功能 - 拦截器方法在Action执行之前或之后执行 工作原理: - ...

  4. (二)spark算子 分为3大类

     transgormation的算子对key-value类型的数据有三种: (1)输入 与 输出为一对一关系 mapValue();针对key-value类型的数据并只对其中的value进行操作,不对 ...

  5. Java异常封装(自定义错误码和描写叙述,附源代码)

    真正工作了才发现.Java里面的异常在真正工作中使用还是十分普遍的. 什么时候该抛出什么异常,这个是必须知道的. 当然真正工作里面主动抛出的异常都是经过分装过的,自己能够定义错误码和异常描写叙述. 以 ...

  6. ubuntu防火墙 ufw配置

    https://www.cnblogs.com/ylan2009/articles/2321136.html

  7. 一、任天堂ns (Nintendo Switch) 上手

    公司不方便回家详解做个博客非专业评测~

  8. Nginx+tomcat集群中,session的共享

    nginx,tomcat集群后多个session分配到同一个应用 单节点低负荷的情况下,我们通常把一个WEB应用打成WAR包放WEB应用服务器,如TOMCAT下运行就行了(如图1).但随着用户量的增加 ...

  9. jvm 调优参数

    -server -Xms6000M -Xmx6000M -Xmn500M -XX:PermSize=500M -XX:MaxPermSize=500M -XX:SurvivorRatio=65536 ...

  10. python在windows下安装paramiko模块和安装pycrypto模块(3步搞定)(转)

    Python中使用SSH需要用到OpenSSH,而OpenSSH依赖于paramiko模块,而paramiko模块又依赖于pycrypto模块,因此要在Python中使用SSH,我们需要先安装pycr ...