结构中的char数组上的Cout在发送套接字后显示垃圾

时间:2015-10-10 17:19:38

标签: c++ sockets struct cout garbage

我有一个结构,它有一个用于文本的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];
};

0 个答案:

没有答案