Python之socket_udp
Posted 亚洲哈登
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python之socket_udp相关的知识,希望对你有一定的参考价值。
UDP服务端&客户端编程
‘‘‘ udp编程 创建socket对象,socket.SOCK_DGRAM 绑定ip和port,bind()方法 传输数据 1.接收数据,socket.recvfrom(bufsize[,flags]),获得一个2元祖(string,address) 2.发送数据,socket.sendto(string,address) ,发送给某地址信息 释放资源 ‘‘‘ import socket server = socket.socket(type=socket.SOCK_DGRAM) server.bind((‘0.0.0.0‘,9999)) data = server.recv(1024) #阻塞等待数据 data = server.recvfrom(1024) #阻塞等待数据(value,(ip,port)) server.sendto(b‘hello‘,(‘127.0.0.1‘,10000)) server.close() ‘‘‘ udp客户端编程流程 创建socket对象,socket.SOCK_DGRAM 发送数据,socket.sendto(string,address)发送给某地址信息 接收数据,socket.recvfrom(bufsize[,flags]),获取一个2元祖(string,address) 释放资源 ‘‘‘ client = socket.socket(type=socket.SOCK_DGRAM) raddr = (‘127.0.0.1‘,10000) client.connect(raddr) client.sendto(b‘hello‘,raddr) data = client.recv(1024) #阻塞等待数据 data = client.recvfrom(1024)#阻塞等待数据,(value,(ip,port)) client.close()
注意:udp时无连接协议,所以可以只有任何一端,例如客户端数据发往服务端,服务端存在与否不重要 udp的socket对象创建后,时没有占用本地地址和端口的 bind() 可以指定本地地址和端口laddr,会立即占用 connect() 可以立即占用本地地址和端口,填充远端地址和端口raddr sendto() 可以立即占用本地地址和端口,并把数据发往指定远端,只有有了本地绑定端口,sendto就可以向任何远端发送数据 send() 需要和connect()配合使用,可以使用已经从本地端口把数据发往raddr指定的远端 recv() 要求一定要在占用可本地端口后,返回接收的数据 recvfrom() 要求一定要占用了本地端口后,返回接收数据和对端地址的二元组
以上是关于Python之socket_udp的主要内容,如果未能解决你的问题,请参考以下文章