UDP网络程序
一、功能:
1.发送信息
2.接收信息
3.退出系统
二、框架设计
1.发送信息 send_msg()
2.接收信息 recv_msg()
3.主程序入口 main()
4.程序独立运行时才启动
三、实现步骤
1.main()
(1).创建socket对象,绑定端口
(2).循环展示功能菜单
(3).接收用户输入的选择
(4).根据用户的选择调用对应的方法
(5).退出系统
(6).关闭socket
2.send_msg()
(1).定义变量接收用户输入的接收方IP、port
(2).定义变量接收用户输入的发送内容
(3).调用sendto()发送信息
3.recv_msg()
(1).调动recvfrom()接收信息
(2).定义变量接收并处理收到的信息
(3).输出处理后的信息
import socket
# 主程序入口
def main():
# 创建socket
socket_obj = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
# 绑定端口
addr_local = ('',9999)
socket_obj.bind(addr_local)
# 循环展示功能菜单
while True:
str = '\n\n---------------------\n'
str += '----- 1.发送信息 -----\n'
str += '----- 2.接收信息 -----\n'
str += '----- 3.退出系统 -----\n'
str += '---------------------'
print(str)
# 接收用户输入的选择
u_sel = int(input('选择功能:'))
# 根据用户的选择调用对应功能
if u_sel == 1 :
print('发送信息:')
send_msg(socket_obj)
elif u_sel == 2 :
print('接收信息:')
recv_msg(socket_obj)
elif u_sel == 3 :
print('退出成功系统')
break
else:
print('请根据菜单输入对应的编号')
# 关闭socket
socket_obj.close()
# 发送信息
def send_msg(socket_obj):
# 用户输入接收端IP、port
addr_IP = input('接收端IP:')
if len(addr_IP) == 0 :
addr_IP = '192.168.124.35'
print('使用默认IP:192.168.124.35')
addr_p = input('接收端端口号:')
if len(addr_p) == 0 :
addr_p = 9999
print('使用默认端口:9999')
addr = (addr_IP,int(addr_p))
# 用户输入发送内容
context = input('发送内容:')
con_bit = context.encode()
# 发送信息
socket_obj.sendto(con_bit,addr)
print('发送成功')
# 接收信息
def recv_msg(socket_obj):
# 接收信息
recv_con,recv_from = socket_obj.recvfrom(1024)
# 处理接收到的数据
recv_con = recv_con.decode(errors='ignore')
# 显示处理后的数据
print(f'收到来自:{recv_from} 的信息:{recv_con}')
if __name__ == '__main__' :
main()