网络编程---socket_Udp

基于UDP协议的socket

UDP是无连接的,启动之后可以直接接受消息,不需要提前建立链接,所以服务端和客户端无优先启动的顺序。

server端

# server 端
import socket
sk = socket.socket(type = socket.SOCK_DGRAM)
sk.bind(('127.0.0.1',8080))

# 服务端必须等待客户端先发送数据过来,无法主动向客户端发送数据
msg,addr = sk.recvfrom(1024) # 接受数据和客户端的地址
print(msg.decode('utf-8')) # 因为传过来的是bytes数据类型,进行编码转译
sk.sendto(bytes('hello',encoding = 'utf-8'),addr) # 服务端回传的信息也需要以bytes数据类型回传,且必须添加addr 这个地址是客户端的地址,若不写,都不知道发给谁

sk.close()

Client端

import socket
sk = socket.socket(type = socket.SOCK_DGRAM)
ip_post = ('127.0.0.1',8080) # 指向服务端的IP和端口

# 客户端需要发送数据到服务端
sk.sendto(bytes('HI',encoding = 'utf-8'),ip_post) # 客户端需要传送的数据和服务器地址
msg,addr = recvfrom(1024)  # 接受服务端返回的数据
print(msg.decode('utf-8'))

sk.close()
# udp的server 不需要进行监听也不需要建立连接
# 在启动服务之后 只能被动的等待客户端发送信息过来
# 客户端发送信息的同时,还会自带地址信息
# 消息回复的时候,不仅需要发送信息,还需要把对方的地址回传过去

UDP的实例:简单的聊天、根据用户写的时间格式,将服务器的时间根据设定的格式返回回去;

posted on 2019-05-02 19:33  Jerry-Wang  阅读(108)  评论(0)    收藏  举报