- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在开发一个项目,我从客户端向服务器发送二进制文件。
我现在面临的主要问题是,当我在文件末尾使用大小为 1400 (char[1400]
) 的有效负载发送时,它只会读取更多内容,而不仅仅是大小它发送给我,我认为它读取了一些随机内存区域。这样做的问题是,它破坏了我的程序的其余部分
这是我迄今为止尝试过的
#define MSGSIZE 1400
#define COUNT 100
typedef struct {
int len;
char payload[MSGSIZE];
} msg;
int rest = size % MSGSIZE;
int length_final = 0;
if(rest % sizeof(char) != 0){
length_final = rest / sizeof(char) + 1;
}
else{
length_final = rest / sizeof(char);
}
while(smth<size){
res = recv_message(&r);
if(((count = fwrite(r.payload,1,MSGSIZE,file1))+smth)<size){
sprintf(r.payload,"ACK");
r.len = 4;
res = send_message(&r);
if (res < 0) {
perror("[RECEIVER] Send ACK error. Exiting.\n");
return -1;
}
else{
if(smth<size){
smth +=count;
}else{
break;
}
}
}
else{
count = fwrite(r.payload,1,length_final,file1);
sprintf(r.payload,"ACK");
r.len = 4;
res = send_message(&r);
smth +=count;
}
}
它仍然不起作用。到目前为止我做错了什么有什么想法吗?
引用文件的最后一行包含[1651]: 706f 7274 00
我的输出文件包含 1651 : 706f 7274 0074 7566 662e 6300 5f5f 4a43
,我的文件还打印了 100 多行随机行
PS:我通过每个recv_message接收字节 block
最佳答案
准确地了解您正在尝试执行的操作并不容易,但按照这些思路进行简化的操作可能会起作用。具体来说,不是归档整个缓冲存储器,而是仅写入其struct
中指示的长度。
#define MSGSIZE 1400
typedef struct {
int len;
char payload[MSGSIZE];
} msg;
int process_msg(int size) {
msg ack = {4, "ACK"}, r = {0};
int res, count;
while(size > 0){
res = recv_message(&r);
if (res < 0) {
perror("Receiver error. Exiting.\n");
return -1;
}
if (r.len > 0) {
count = fwrite(r.payload, 1, r.len, file1);
if (count != r.len) {
perror("Failed to write to file. Exiting.\n");
return -1;
}
}
res = send_message(&ack);
if (res < 0) {
perror("Failed to send ACK message. Exiting.\n");
return -1;
}
size -= r.len;
}
return 0;
}
关于c - 尝试从二进制文件读取足够字节时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29234158/
对于我的问题,我找不到更好的措辞。 在我的应用程序中的某个时刻,我设置了一些非常密集的动画。问题是,在高端设备上,动画运行流畅且赏心悦目。另一方面,我测试过的一台低端设备在制作动画时表现非常糟糕。 试
我正在修补 OTP 模块 ( yubico_pam ),并尝试访问管理员选择的控制标志(例如必需,足够, ETC)。 有什么想法吗?这是否可行(无需解析文件)? 最佳答案 无法在 API 中查询此信息
我有一些为 Linux 编写的 C 代码,依赖于套接字和 arpa/inet.h 以及 libusb.h,我想在 MinGW 下为 Windows 编译它。 (请注意,当前项目只有一个非常简单的 Ma
我是一名优秀的程序员,十分优秀!