xuwq2015 2015-04-09 03:17 采纳率: 25%
浏览 1461
已采纳

c语言在接收网络数据的溢出问题

代码如下:

 int main() {
            struct sockaddr_in addr, fromAddr;
          int socketd, linkSocketd, num;
          size_t size;

          char readData[1024] = {'\0'};
          addr.sin_family = AF_INET;
          addr.sin_port = htons(9900);
          addr.sin_addr.s_addr = INADDR_ANY;

                socketd = socket(PF_INET, SOCK_STREAM, 0);
        if(socketd == -1) {
                         perror("socket");
                                 return 1;
                }
          if(bind(socketd, (struct sockaddr*)&addr, 16) == -1) {
                perror("bind");
                return 1;
        }
        listen(socketd, 20);
        linkSocketd = accept(socketd, (struct sockaddr*)&addr, &size);
        if(linkSocketd == -1) {
                perror("accept");
                return 1;
        }

                size = sizeof(fromAddr);
        readSize = recvfrom(linkSocketd, (void*)&readData, sizeof(readData), 0, &fromAddr, &size);
        printf("接收到%d字节\n", readSize);
        for(num = 0; num <readSize; num++) {
                printf("print_data[%d]:%x\n", num, readData[num]);
        }
          return 0;
}

结果:
接收到22字节
print_data[0]:68
print_data[1]:3a
print_data[2]:0
print_data[3]:3a
print_data[4]:0
print_data[5]:68
print_data[6]:ffffffc9
print_data[7]:ffffffff
print_data[8]:ffffffff
print_data[9]:1
print_data[10]:69
print_data[11]:0
print_data[12]:2
print_data[13]:73
print_data[14]:0
print_data[15]:0
print_data[16]:1
print_data[17]:0
print_data[18]:0
print_data[19]:0
print_data[20]:ffffffa7
print_data[21]:16
在第6、7、8、20元素的结果为何会出现这种情况?????

  • 写回答

3条回答 默认 最新

  • threenewbee 2015-04-09 04:20
    关注

    char readData[1024] = {'\0'};
    修改为
    unsigned char readData[1024] = {'\0'};
    看看

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?