简易聊天室功能使用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()
运行结果:

网友评论