首页 > 其他 > 详细

第八章 socket网络编程(13):UDP协议套接字实现

时间:2019-08-04 19:35:02      阅读:57      评论:0      收藏:0      [点我收藏+]

简单的实现UDP协议:

server.py

from socket import *  # socket模块,因为经常用很多次,所以推荐全部导入,这样可以少写很多socket.socket

# 生成套接字对象
server = socket(AF_INET, SOCK_DGRAM)  # AF_INET是网络类型家族(基于网络通信),stream是流的意思,即TCP协议(流式协议)

#2 绑定IP和端口
server.bind(('127.0.0.1', 8080))  # 以元组的形式传入 服务端IP 和 接收端口

# server.listen(5)  # UDP没有连接,所以不需要listen
# conn, client_addr = server.accept()  # UDP没有连接,所以不需要等待连接

#3 收,发消息(传数据)
while True:
    data, client_addr = server.recvfrom(1024)  # UDP使用recvfrom(),接收的参数是两个。
    print(data)

    server.sendto(data.upper(), client_addr)  # 发给客户端
server.close()

client.py

from socket import *

client = socket(AF_INET, SOCK_DGRAM)

while True:
    msg = input('>>> :').strip()
    client.sendto(msg.encode('utf-8'), ('127.0.0.1', 8080))  # 因为UDP没有连接,所以直接指定内容和服务器ip&端口来发送。
    # sendto(bytes类型data,元组类型服务器IP&端口)

    # if not msg: continue  # TCP中不能发空数据,而UDP数据即使为空,因为自带报头(数据报协议),所以可以发送。
    # UDP协议必须发送和接受是1对1的,即一个sendto对应一个recvfrom。(数据报是完整的数据)
    # UDP不会粘包
    # UDP中,一次发送的数据超过对方一次接收的上限,超出部分会丢失。(windows会报错)

    data, server_addr = client.recvfrom(1024)
    print(data, server_addr)
client.close()

第八章 socket网络编程(13):UDP协议套接字实现

原文:https://www.cnblogs.com/py-xiaoqiang/p/11299021.html

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