Python实现客户端服务器代码示例:数据和文件处理

这篇博客提供了一个使用Python编写的客户端-服务器应用程序的代码示例。提供的代码片段侧重于服务器端数据和文件处理操作,例如获取、保存、删除数据以及上传和下载文件。

服务器端代码示例(部分)

以下Python代码片段展示了服务器如何处理数据和文件请求:pythonimport osimport jsonimport uuidfrom os.path import join

... other code ...

def data_process(username, request_operation, json_data, connection_socket): ''' 数据处理 :param username: 用户名 :param request_operation: 请求操作 :param json_data: JSON格式的数据 :param connection_socket: 连接套接字 :return: None ''' global logger if request_operation == OP_GET: if FIELD_KEY not in json_data.keys(): logger.info(f'<-- 获取数据时缺少键值。') logger.error(f'<-- 数据获取操作缺少字段“key”。') connection_socket.send( make_response_packet(OP_GET, 410, TYPE_DATA, f'数据获取操作缺少字段“key”。', {})) return logger.info(f'--> 获取数据 {json_data[FIELD_KEY]}') if os.path.exists(join('data', username, json_data[FIELD_KEY])) is False: logger.error(f'<-- 键值 {json_data[FIELD_KEY]} 不存在。') connection_socket.send( make_response_packet(OP_GET, 404, TYPE_DATA, f'键值 {json_data[FIELD_KEY]} 不存在。', {})) return try: with open(join('data', username, json_data[FIELD_KEY]), 'r') as fid: data_from_file = json.load(fid) logger.info(f'<-- 找到数据并返回给客户端。') connection_socket.send( make_response_packet(OP_GET, 200, TYPE_DATA, 'OK', data_from_file)) except Exception as ex: logger.error(f'{str(ex)}@{ex.traceback.tb_lineno}')

if request_operation == OP_SAVE:        key = str(uuid.uuid4())        if FIELD_KEY in json_data.keys():            key = json_data[FIELD_KEY]        logger.info(f'--> 保存数据,键值为“{key}”')        if os.path.exists(join('data', username, key)) is True:            logger.error(f'<-- 键值“{key}”已存在。')            connection_socket.send(make_response_packet(OP_SAVE, 402, TYPE_DATA, f'键值“{key}”已存在。', {}))            return        try:            with open(join('data', username, key), 'w') as fid:                json.dump(json_data, fid)                logger.info(f'<-- 数据已保存,键值为“{key}”。')                connection_socket.send(                    make_response_packet(OP_SAVE, 200, TYPE_DATA, f'数据已保存,键值为“{key}”。', {FIELD_KEY: key}))        except Exception as ex:            logger.error(f'{str(ex)}@{ex.__traceback__.tb_lineno}')

if request_operation == OP_DELETE:        if FIELD_KEY not in json_data.keys():            logger.info(f'--> 尝试删除数据,但未提供任何键值。')            logger.error(f'<-- 数据删除操作缺少字段“key”。')            connection_socket.send(                make_response_packet(OP_DELETE, 410, TYPE_DATA, f'数据删除操作缺少字段“key”。', {}))            return        if os.path.exists(join('data', username, json_data[FIELD_KEY])) is False:            logger.error(f'<-- 键值“{json_data[FIELD_KEY]}”不存在。')            connection_socket.send(                make_response_packet(OP_DELETE, 404, TYPE_DATA, f'键值“{json_data[FIELD_KEY]}”不存在。',                                     {}))            return        try:            os.remove(join('data', username, json_data[FIELD_KEY]))            logger.error(f'<-- 键值“{json_data[FIELD_KEY]}”已删除。')            connection_socket.send(                make_response_packet(OP_DELETE, 200, TYPE_DATA, f'键值“{json_data[FIELD_KEY]}”已删除。',                                     {FIELD_KEY: json_data[FIELD_KEY]}))        except Exception as ex:            logger.error(f'{str(ex)}@{ex.__traceback__.tb_lineno}')

def file_process(username, request_operation, json_data, bin_data, connection_socket): ''' 文件处理 :param username: 用户名 :param request_operation: 请求操作 :param json_data: JSON格式的数据 :param bin_data: 二进制数据 :param connection_socket: 连接套接字 :return: ''' global logger if request_operation == OP_GET: if FIELD_KEY not in json_data.keys(): logger.info(f'--> 计划下载文件 {json_data[FIELD_KEY]}')

        connection_socket.send(                make_response_packet(OP_GET, 410, TYPE_FILE, f'数据获取操作缺少字段“key”。', {}))            return        logger.info(f'--> 计划下载文件,键值为“{json_data[FIELD_KEY]}”')        if os.path.exists(join('file', username, json_data[FIELD_KEY])) is False and os.path.exists(                join('tmp', username, json_data[FIELD_KEY])) is False:            logger.error(f'<-- 键值 {json_data[FIELD_KEY]} 不存在。')            connection_socket.send(                make_response_packet(OP_GET, 404, TYPE_FILE, f'键值 {json_data[FIELD_KEY]} 不存在。', {}))            return

    # ... other code ...
Python实现客户端服务器代码示例:数据和文件处理

原文地址: https://www.cveoy.top/t/topic/bfWn 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录