UDP Ping程序实现--第2关:接收并转发消息
2023-12-23 18:50:31
?创作不易,还希望各位大佬支持一下?
👍 点赞,你的认可是我创作的动力!?
?? 收藏,你的青睐是我努力的方向!
?? 评论,你的意见是我进步的财富!?
?
任务描述
本关任务:在 Ping 服务端程序框架中,完成接收数据,并回传给相应客户端。
相关知识
为了完成本关任务,你需要掌握:
- UDP Ping 服务程序的框架;
- 如何接收数据包套接字数据;
- 如何发送数据包套接字数据。
服务器程序框架介绍
在这个简单的 UDP Ping 服务器程序中,完成套接字创建及绑定后,当接收到消息后进行简单处理(这里是转化为大写),再将消息回传给相应的客户端。
UDP通信中发送与接收数据
在 UDP 通信中,使用sendto()
函数发送 UDP 数据,将数据发送到套接字,输入参数 address 是形式为(host, port)
的元组,指定远程地址,其中host
表示服务器地址,port
表示服务器端口号。返回值是发送的字节数。
接收数据使用recvfrom()
函数实现。输入参数为接收缓冲区大小。该函数接收 UDP 数据,与recv()
类似,但返回值是(data, address)
。其中data
是包含接收数据的字符串,address
是发送数据的套接字地址。
示例如下:
- 接收数据
msg,addr=udp_server.recvfrom(BUFSIZE)
使用套接字对象udp_server的recvfrom()方法接收数据
- 发送数据
udp_server.sendto(msg,addr)
使用套接字对象udp_server的sendto()方法发送数据
编程要求
根据提示,在右侧编辑器中Begin
与End
之间补充代码,完成接收 Ping 客户端发送的消息并转发给相应的客户端。
测试说明
平台会对你编写的代码进行测试,客户端发送多个消息,并接收服务器的回传消息,并打印相应的统计信息。
预期输出:
Sequence 1: Reply from 127.0.0.1 RTT = 0.000s
Sequence 2: Request timed out
Sequence 3: Request timed out
Sequence 4: Request timed out
Sequence 5: Request timed out
Sequence 6: Request timed out
Sequence 7: Request timed out
Sequence 8: Request timed out
Sequence 9: Request timed out
Sequence 10: Request timed out
?源程序示例
from socket import *
# 创建UDP套接字
serverSocket = socket(AF_INET, SOCK_DGRAM)
# 绑定本机IP地址和端口号
serverSocket.bind(('', 12000))
########## Begin ##########
# 接收客户端消息
message, address = serverSocket.recvfrom(1024)
# 将数据包消息转换为大写
message = message.upper()
#将消息传回给客户端
serverSocket.sendto(message, address)
########## End ##########
文章来源:https://blog.csdn.net/qq_66047907/article/details/135172122
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!