我有一个结构,它有一个用于文本的char数组。该结构将通过UDP发送。在发送方面,显示文本没有问题。在大多数情况下,文本的长度等于char数组的大小。在发送方使用cout时,文本显示没有错误。但是,在接收方,每次都会出现垃圾值。
在发送方:
bzero(c, DATA_SIZE+1);
file.read(c, DATA_SIZE);
strcpy(window[i].data, c);
cout << window[i].data; // this shows the text correctly
在接收方:
bzero(&recd_packet, sizeof(rudp_packet));
recvfrom(udp_socket, &recd_packet, sizeof(rudp_packet),0,NULL, NULL);
int rec_no = recd_packet.seq_no;
cout << "\n\n\n\nSequence number: " << rec_no << "\n";
cout << recd_packet.data; // this shows garbage at the end
我在填写任何内容之前清除所有缓冲区/结构。我哪里错了?
编辑:我调整了临时缓冲区的大小&#39; c&#39;到DATA_SIZE(1464),并复制长度小于DATA_SIZE的数据。在最后一个位置,我把&#39; \ 0&#39;它现在正常工作。我的问题仍然存在,是什么让它在发送方面正常工作?EDIT2:这是结构:
struct rudp_packet {
bool ack;
bool fin;
int seq_no;
char data[DATA_SIZE];
};