Python3 & 基于UDP方式实现简易聊天室功能

2021-01-19  本文已影响0人  乘风破浪的姐姐

简易聊天室功能使用UDP的方式实现,主要实现3部分功能:
1.获取键盘数据,并将数据发送给对⽅
2.接收数据并显示
3.退出聊天系统

思路分析
功能:
1、发送消息
2、接收消息
3、退出系统

架构:
发送消息 send_msg()
接收消息 recv_msg()
主⼊⼝ main()

主⼊⼝:
1、导⼊模块
2、创建套接字
3、绑定端⼝

发送消息:
1、保存接收⽅信息(⽤户输⼊)
2、保存接收⽅端⼝号(⽤户输⼊)
3、保存要发送的内容(⽤户输⼊)
4、把⽤户输⼊的内容编码并发送

接收消息:
1、使⽤socket recvfrom 接收数据
2、解码数据并且输出

聊天室代码:

import socket

def send_message(udp_socket):
   address = input("请输入接收方地址:")
   if len(address)==0:
       address ='172.28.40.185'
       print("默认设置地址为:%s" % address)

   port =  input("请输入接收方端口:")
   if len(port)==0:
       port ='7777'
       print("默认设置端口为:%s" % port)
   message = input("请输入要发送的内容:")
   udp_socket.sendto(message.encode("GBK"),(address,int(port)))

def recv_message (udp_socket):
   data,ip_port = udp_socket.recvfrom(1024)
   rece_data = data.decode("GBK")
   print("接收到的数据:%s"%rece_data)

if __name__ == '__main__':
   udp_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
   udp_socket.bind(("",7777))
   while True:
       # 给出提示,显示聊天器的主要功能
       print("*************************")
       print("**** 1.发送消息 ****")
       print("**** 2.接收消息 ****")
       print("**** 3.退出系统 ****")
       print("*************************")

       menu = int(input("请输入要选择的功能序号:"))

       if menu == 1:
           send_message(udp_socket)
       elif menu == 2:
           recv_message(udp_socket)
       elif menu == 3:
           print("正在退出...")
           break
           print("OK,退出了")

udp_socket.close()

运行结果:


image.png
上一篇下一篇

猜你喜欢

热点阅读