1.python udp聊天器
(1)包 threading socket
2.功能:
(1)udp连接 收发消息
(2)记录聊天记录
3.改进版本 : 聊天内容存入数据库备份
import threading
import time
import socket
class Udp_chat():
user1 = ('172.20.10.5',7000) #地址 hu
# udp_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) #创建UDP
# addr = ('192.168.204.1',10010)
# udp_socket.bind(addr)
def __init__(self):
self.addr = ('172.20.10.5',10010)
self.user1 = ('172.20.10.5',7000)
self.socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) #创建UDP
self.socket.bind(self.addr)
def send_msg(self,addr): #发消息
msg = input('请输入发送的信息:')
if msg =='退出':
exit()
else:
self.socket.sendto(msg.encode('gbk'),addr)
with open('record.txt','a',encoding='GBK') as file: #聊天记录
now = time.localtime()
nowt = time.strftime("%Y-%m-%d-%H-%M-%S", now) # 这一步就是对时间进行格式化
file.write('\n'+nowt+'>>'+self.user1[0])
file.write('\n'+msg)
def rec_msg(self): #收消息
recv_str = self.socket.recvfrom(1024)
#print(type(recv_str))
recv_text = recv_str[0].decode(encoding='GBK')
print(recv_str[1] ,'发来了消息:'+recv_text)
with open('record.txt','a',encoding='GBK') as file:
now = time.localtime()
nowt = time.strftime("%Y-%m-%d-%H-%M-%S", now) # 这一步就是对时间进行格式化
file.write('\n'+nowt+'<<'+self.user1[0])
file.write('\n'+recv_text)
def is_user(self,user_name):
if user_name ==self.user1:
return self.user1
if __name__ == '__main__':
print('在线用户:user1 user2')
print('-'*50)
# ur= input('选择在线用户:')
# user=is_user(ur)
udp_chat =Udp_chat()
while 1:
t1= threading.Thread(target=udp_chat.send_msg(udp_chat.user1))
t2= threading.Thread(target=udp_chat.rec_msg())
t1.start()
t2.start()
效果图: