返回介绍

飞鸽传书 发送文件 创建 tcp 服务器

发布于 2023-06-19 15:03:34 字数 3014 浏览 0 评论 0 收藏 0

飞鸽传书-发送文件-创建tcp服务器

FeiQTcp.py(新建文件)

import threading
import time
import socket

tcp_server_socket = None  # 用来存储tcp服务器套接字


def deal_feiq_data(recv_data):
    """处理接收到的飞秋数据"""
    # b'1_lbt80_0#128#000C29770BAB#0#0#0#4000#9:1501516970:Administrator:DONGGE-32E5DBE1:96:597ee52c:0:0:'
    recv_data = recv_data.decode("gbk", errors="ignore")
    feiq_data_list = recv_data.split(":", 5)

    feiq_data = dict()
    feiq_data['version'] = feiq_data_list[0]
    feiq_data['packet_id'] = feiq_data_list[1]
    feiq_data['user_name'] = feiq_data_list[2]
    feiq_data['host_name'] = feiq_data_list[3]
    feiq_data['command_num'] = feiq_data_list[4]
    feiq_data['option'] = feiq_data_list[5]
    return feiq_data


def get_file_info(option):
    """提取文件信息"""
    file_info_list = option.split(":", 3)
    packet_id = file_info_list[0]
    file_id = file_info_list[1]
    # int("0x131234", 16)---->将一个16进制数的字符串 转换为 整数
    return int(packet_id, 16), int(file_id)  # 用udp发送文件消息时的包编号,文件序号


def send_file(client_socket):
    """发送文件给客户端"""
    request_data = client_socket.recv(1024)
    # print(request_data)
    feiq_data = deal_feiq_data(request_data)
    packet_id, file_id = get_file_info(feiq_data['option'])
    print("对方请求下载文件的包编号是:%d, 序号是:%d" % (packet_id, file_id))
    client_socket.close()


def tcp_main():
    """用来完成tcp相关的功能控制"""
    global tcp_server_socket

    tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    tcp_server_socket.bind(("", 2425))
    tcp_server_socket.listen(128)
    while True:
        # print("等待新客户的链接。。。。", end="")
        client_socket, client_addr = tcp_server_socket.accept()
        send_file_thread = threading.Thread(target=send_file, args=(client_socket,))
        send_file_thread.start()

if __name__ == "__main__":
    tcp_main()

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文