c++

简介: c++
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <arpa/inet.h>#define SOH 0x01#define STX 0x02#define ETX 0x03#define ETB 0x17#define EOT 0x04#define SYN 0x16#define DLE 0x10#define NAK 0x15#define ACK0 0x1000#define ACK1 0x1001intmain(intargc, char*argv[]) {
if (argc!=2) {
printf("Usage: %s <filename>\n", argv[0]);
return1;
    }
constchar*filename=argv[1];
FILE*file=fopen(filename, "rb");
if (file==NULL) {
printf("Failed to open file: %s\n", filename);
return1;
    }
// 创建TCP套接字intsock=socket(AF_INET, SOCK_STREAM, 0);
if (sock==-1) {
printf("Failed to create socket\n");
fclose(file);
return1;
    }
// 设置服务器地址信息structsockaddr_inserver_addr;
memset(&server_addr, 0, sizeof(server_addr));
server_addr.sin_family=AF_INET;
server_addr.sin_addr.s_addr=inet_addr("127.0.0.1");
server_addr.sin_port=htons(3568);
// 连接服务器if (connect(sock, (structsockaddr*)&server_addr, sizeof(server_addr)) ==-1) {
printf("Failed to connect to the server\n");
fclose(file);
close(sock);
return1;
    }
// 发送文件数据intsequence=0;
charbuffer[1024];
size_tread_bytes;
intack_sequence=0;
intrecv_ack;
// 发送同步字buffer[0] =SYN;
buffer[1] =SYN;
write(sock, buffer, 2);
// 等待接收方的ACK0if (read(sock, &recv_ack, sizeof(recv_ack)) !=sizeof(recv_ack)) {
printf("Failed to receive ACK\n");
fclose(file);
close(sock);
return1;
    }
if (ntohs(recv_ack) !=ACK0) {
printf("Failed to establish connection\n");
fclose(file);
close(sock);
return1;
    }
while ((read_bytes=fread(buffer, 1, sizeof(buffer), file)) >0) {
size_ttotal_bytes=read_bytes;
if (sequence==0)
buffer[total_bytes++] =SOH;
elsebuffer[total_bytes++] =STX;
// 转义控制字符inti, j;
for (i=1, j=1; i<read_bytes; i++, j++) {
if (buffer[i] ==SYN||buffer[i] ==ETB||buffer[i] ==ETX||buffer[i] ==DLE) {
buffer[j++] =DLE;
            }
buffer[j] =buffer[i];
        }
read_bytes=j;
// 计算BCC校验shortbcc=0;
for (i=0; i<read_bytes; i++) {
bcc+=buffer[i];
        }
buffer[total_bytes++] =ETX;
buffer[total_bytes++] =bcc>>8;
buffer[total_bytes++] =bcc&0xFF;
// 发送数据if (write(sock, buffer, total_bytes) !=total_bytes) {
printf("Failed to send data\n");
fclose(file);
close(sock);
return1;
        }
// 等待接收方的ACKif (read(sock, &recv_ack, sizeof(recv_ack)) !=sizeof(recv_ack)) {
printf("Failed to receive ACK\n");
fclose(file);
close(sock);
return1;
        }
if (ntohs(recv_ack) !=ACK0+sequence) {
printf("Failed to receive ACK\n");
fclose(file);
close(sock);
return1;
        }
sequence=1-sequence;
    }
// 发送结束字符buffer[0] =EOT;
if (write(sock, buffer, 1) !=1) {
printf("Failed to send EOT\n");
fclose(file);
close(sock);
相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
打赏
0
0
0
0
17
分享
相关文章
利用通义灵码AI在VS Code中快速开发扫雷游戏:Qwen2.5-Max模型的应用实例
本文介绍了如何利用阿里云通义灵码AI程序员的Qwen2.5-Max模型,在VS Code中一键生成扫雷小游戏。通过安装通义灵码插件并配置模型,输入指令即可自动生成包含游戏逻辑与UI设计的Python代码。生成的游戏支持难度选择,运行稳定无Bug。实践表明,AI工具显著提升开发效率,但人机协作仍是未来趋势。建议开发者积极拥抱新技术,同时不断提升自身技能以适应行业发展需求。
22025 5
快速带你上手通义灵码 2.0,体验飞一般的感觉
通义灵码个人版为开发者免费提供智能编码能力,专业版限免期内开放更多功能。使用需先注册阿里云账号,支持JetBrains IDEs、Visual Studio Code等开发工具。以Visual Studio Code为例,安装插件并登录后即可体验其强大功能。通义灵码2.0在代码生成、需求理解及单元测试自动化等方面有显著提升,支持多语言和复杂场景,大幅提高开发效率。
104455 9
快速带你上手通义灵码 2.0,体验飞一般的感觉
基于阿里百炼的DeepSeek-R1满血版模型调用【零门槛保姆级2084小游戏开发实战】
本文介绍基于阿里百炼的DeepSeek-R1满血版模型调用,提供零门槛保姆级2048小游戏开发实战。文章分为三部分:定位与核心优势、实战部署操作指南、辅助实战开发。通过详细步骤和案例展示,帮助开发者高效利用DeepSeek-R1的强大推理能力,优化游戏逻辑与视觉效果,解决官网响应延迟问题,提升开发效率和用户体验。适合企业开发者、教育行业及多模态探索者使用。
89956 24
基于阿里百炼的DeepSeek-R1满血版模型调用【零门槛保姆级2084小游戏开发实战】
小鱼深度评测 | 通义灵码2.0,不仅可跨语言编码,自动生成单元测试,更炸裂的是集成DeepSeek模型且免费使用,太炸裂了。
小鱼深度评测 | 通义灵码2.0,不仅可跨语言编码,自动生成单元测试,更炸裂的是集成DeepSeek模型且免费使用,太炸裂了。
141114 25
小鱼深度评测 | 通义灵码2.0,不仅可跨语言编码,自动生成单元测试,更炸裂的是集成DeepSeek模型且免费使用,太炸裂了。
快速使用 DeepSeek-R1 满血版
DeepSeek是一款基于Transformer架构的先进大语言模型,以其强大的自然语言处理能力和高效的推理速度著称。近年来,DeepSeek不断迭代,从DeepSeek-V2到参数达6710亿的DeepSeek-V3,再到性能比肩GPT-4的DeepSeek-R1,每次都带来重大技术突破。其开源策略降低了AI应用门槛,推动了AI普惠化。通过阿里云百炼调用满血版API,用户可以快速部署DeepSeek,享受高效、低成本的云端服务,最快10分钟完成部署,且提供免费token,极大简化了开发流程。
191185 28
快速使用 DeepSeek-R1 满血版
深度评测 | 仅用3分钟,百炼调用满血版 Deepseek-r1 API,百万Token免费用,简直不要太爽。
仅用3分钟,百炼调用满血版Deepseek-r1 API,享受百万免费Token。阿里云提供零门槛、快速部署的解决方案,支持云控制台和Cloud Shell两种方式,操作简便。Deepseek-r1满血版在推理能力上表现出色,尤其擅长数学、代码和自然语言处理任务,使用过程中无卡顿,体验丝滑。结合Chatbox工具,用户可轻松掌控模型,提升工作效率。阿里云大模型服务平台百炼不仅速度快,还确保数据安全,值得信赖。
358101 68
深度评测 | 仅用3分钟,百炼调用满血版 Deepseek-r1 API,百万Token免费用,简直不要太爽。
Manus:或将成为AI Agent领域的标杆
随着人工智能技术的飞速发展,AI Agent(智能体)作为人工智能领域的重要分支,正逐渐从概念走向现实,并在各行各业展现出巨大的应用潜力。在众多AI Agent产品中,Manus以其独特的技术优势和市场表现,有望成为该领域的标杆。作为资深AI工程师,本文将深入探讨Manus的背景知识、主要业务场景、底层原理、功能的优缺点,并尝试使用Java搭建一个属于自己的Manus助手,以期为AI Agent技术的发展和应用提供参考。
11282 15
阿里云百炼已上线超强推理开源模型QwQ-32B,尺寸更小,性能比肩DeepSeek满血版
通义千问团队推出了320亿参数的QwQ-32B模型,通过大规模强化学习和多阶段训练,在数学、编程及通用能力上达到或超越了DeepSeek-R1等先进模型。QwQ-32B模型已在阿里云百炼上线,支持API调用,用户可通过官方文档了解详细使用方法。未来,团队将继续探索智能体与RL集成,推动人工通用智能的发展。
从零开始教你打造一个MCP客户端
Anthropic开源了一套MCP协议,它为连接AI系统与数据源提供了一个通用的、开放的标准,用单一协议取代了碎片化的集成方式。本文教你从零打造一个MCP客户端。
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等