'''
一、功能
1、发送信息
2、接收信息
3、退出系统
二、框架设计
1、发送信息 send_msg()
2、接收信息 recv_msg()
3、程序的主入口 main()
4、当程序独立运行的时候,才启动聊天器
三、实现步骤
1、发送信息
1)定义变量接收 对方IP地址
2)定义变量接收 对方端口号
3)定义变量接收 发送给对方的内容
4)使用socket的sendto()发送信息
2、接收信息
1)使用socket 接收数据
2)解码数据
3)输出显示
3、主入口
1)创建套接字
2)绑定端口
3)打印菜单
4)接收用户输入的选项
5)判断用户的选择并调用
6)关闭套接字
'''
import socket
def menu():
print("*"*25)
print("-------1、发送信息--------")
print("-------2、接收信息--------")
print("-------3、退出------------")
print("*" * 25)
def send_msg(udp_socket):
ipaddr=input("请输入接收方的IP地址:")
if len(ipaddr)==0:
ipaddr="192.168.145.1"
print("IP默认为%s:"%ipaddr)
port=input("请输入接收方的端口号:")
if len(port)==0:
port='8080'
print("端口号默认为:%s"%port)
content=input("请输入发送的内容:")
udp_socket.sendto(content.encode(),(ipaddr,int(port)))
def recv_msg(udp_scoket):
recv_data,ip_port=udp_scoket.recvfrom(1024)
recv_text=recv_data.decode()
print("接收到【%s】的消息:%s"%(str(ip_port),recv_text))
def main():
upd_socket=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
upd_socket.bind(("",8080))
while True:
menu()
select_num=input("请输入选项:")
if select_num=='1':
send_msg(upd_socket)
elif select_num=='2':
recv_msg(upd_socket)
elif select_num=='3':
print("正在退出...")
break
upd_socket.close()
if __name__ == '__main__':
main()
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/b3b310fc3c34371993bf321c969ee6d2.png#pic_center)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/2125c3d117e631cea1b3a931ae048d2e.png#pic_center)