首页 > 其他 > 详细

udp套接字

时间:2021-05-19 23:56:59      阅读:37      评论:0      收藏:0      [点我收藏+]
‘‘‘udp套接字‘‘‘
from socket import *
‘‘‘服务端‘‘‘

ip_port = (‘127.0.0.1‘, 8000)
buffer_size = 1024
# 服务器信息和recv收录字节大小,到时候这样的数据可以写到配置文件,程序代码可无需把数据写死

udp_server = socket(AF_INET, SOCK_DGRAM) # DGRAM=datagram,翻译为数据报的意思
# socket实例化

udp_server.bind(ip_port)
# 绑定服务器ip和端口

while True:
data, addr = udp_server.recvfrom(buffer_size) # 收到的消息是元组的类型,第一个参数为消息,第二个参数为元组类型的对方的ip地址和端口信息
# recvfrom()收到客户端发送的消息,收到的addr信息是客户端的

print(‘客户端发送的消息解压后数据为:‘, data, addr) # b‘haha‘ (‘127.0.0.1‘, 59702)

udp_server.sendto(data.upper(), addr) # 发送信息需要两个参数,一个是发送数据,一个是元组类型的对方ip地址和端口信息
# sendto()发送消息给客户端,所以addr就是写客户端的

udp_server.close()
# 关闭链接

# 注意:服务端sendto()传的ip和端口信息是客户端的,但是客户端的recvfrom()收到的ip和端口信息则是服务端的(两端可互换表达意思一样)


from socket import *
‘‘‘客户端‘‘‘

ip_port = (‘127.0.0.1‘, 8000)
buffer_size = 1024

udp_client = socket(AF_INET, SOCK_DGRAM)

while True:
msg = input(‘请输入:‘).strip()
udp_client.sendto(msg.encode(‘utf-8‘), ip_port)
# 发送消息给服务端,那么第二个参数就写服务端的

data1, addr1 = udp_client.recvfrom(buffer_size)
# 收到服务端发送的信息,所以addr1是服务端的ip及端口信息

print(‘服务端发送的消息:‘, data1, addr1)

udp_client.close()


‘‘‘tcp和udp归纳整理‘‘‘

tcp服务端:socket(套接字家族,tcp协议),setsocketopt(解决由于突然断开链接引起的端口被占用情况,需要3个参数),bind(元组类型的服务器ip及端口信息),listen(监听数量),accept()--->(返回结果为元组类型,第一个为链接,第二个为客户端的ip及端口信息),recv(字节数)/send(编码后的数据),colse(),close()

tcp客户端:socket(套接字家族,tcp协议),connect(元组类型的服务器ip及端口信息),send(编码后的数据)/recv(字节数),close()


udp服务端:socket(套接字家族,tcp协议),bind(元组类型的服务器ip及端口信息),recvfrom(字节数)--->(返回结果为元组类型,第一个为编码后数据,第二个为对方的ip及端口信息)/sendto(编码后数据,元组形式的对方IP和端口),close()

udp客户端:socket(套接字家族,tcp协议),sendto(编码后数据,元组形式的对方IP和端口)/recvfrom(字节数)--->(返回结果为元组类型,第一个为编码后数据,第二个为对方的ip及端口信息),close()

udp套接字

原文:https://www.cnblogs.com/xuewei95/p/14786500.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!