def send_file_msg(): #接收用户输入的对方ip地址 dest_ip = input("请输入对方ip地址(输入0显示在线用户列表)") if dest_ip == "0": #显示在线用户列表 main.show_online_list() try: #接收用户输入的序号 index = int(input("请输入用户的序号:")) #根据用户的序号获取列表中的字典信息 user_dict = feigeglobal.online_user_list[index] #根据字典里面key获取对方的ip地址 dest_ip = user_dict["destip"] except Exception as e: print("请输入合法的用户序号!") print("异常信息为:",e) return #接收用户发送的内容 filename = input("请输入要发送的文件名:") if dest_ip and filename: #准备发送文件消息内容 #版本号:包编号:用户名:主机名:命令字:消息\0文件序号:文件名:文件大小:文件修改时间:文件类型 #这里我们只匹配消息后面的内容:消息\0文件序号:文件名:文件大小:文件修改时间:文件类型 #获取文件大小 file_size = os.path.getsize(filename) file_time = int(os.path.getctime(filename)) file_info = "\0%d:%s:%x:%x:%x"%(0,filename,file_size,file_time,feigeglobal.IPMSG_FILE_REGULAR) send_file_info = build_msg(feigeglobal.IPMSG_SENDMSG | feigeglobal.IPMSG_FILEATTACHOPT,file_info) #send_file_info的内容:1:1509181309:安琪拉宝宝:kkxiami:2097184:0:feige.py:123:123124:1 #print(send_file_info) #发送消息内容 send_msg(send_file_info,dest_ip) #将文件包编号,文件序号,文件名封装到字典 send_file_dict = dict() send_file_dict["packageid"] = feigeglobal.packgeid send_file_dict["fileindex"] = 0 send_file_dict["filename"] = filename print(send_file_dict) #封装发送文件信息到字典 file_dict = dict() #文件类型 file_dict["filetype"] = "sendfile" file_dict["data"] = send_file_dict #将发送文件的字典信息放入消息队列 feigeglobal.file_queue.put(file_dict)
def send_msg_to_destip(): #接收用户输入的对方ip地址 dest_ip = input("请输入对方ip地址(输入0显示在线用户列表):") if dest_ip == "0": main.show_online_list() try: index = int(input("请输入序号:")) user_dict = feigeglobal.online_user_list[index] dest_ip = user_dict["destip"] except Exception as e: print("请输入合法的序号!") print("打印异常信息!",e) return #接收用户发送的内容 content = input("请输入发送的内容:") if dest_ip and content: send_content = build_msg(feigeglobal.IPMSG_SENDMSG,content) # 发送下线消息 #udp_client_socket.sendto(send_content.encode("gbk"), (dest_ip, feiq_port)) send_msg(send_content,dest_ip)