码迷,mamicode.com
首页 > 编程语言 > 详细

Python之socket_udp

时间:2018-06-16 22:40:01      阅读:247      评论:0      收藏:0      [点我收藏+]

标签:流程   recvfrom   .so   back   客户   server   编程   send   ack   

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(bhello,(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(bhello,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

标签:流程   recvfrom   .so   back   客户   server   编程   send   ack   

原文地址:https://www.cnblogs.com/harden13/p/9191470.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!