首页 新闻 会员 周边 捐助

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

0
悬赏园豆:5 [待解决问题]
 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元素的结果为何会出现这种情况?????

注:帧的基本单元为8位字节。

c
xwq--的主页 xwq-- | 初学一级 | 园豆:194
提问于:2015-04-09 11:52
< >
分享
所有回答(2)
0

printf("print_data[%d]:%x\n", num, (unsigned char)readData[num]);

Launcher | 园豆:45050 (高人七级) | 2015-04-09 12:34
0

针对你的问题,已经写成随笔。请参考http://www.cnblogs.com/acool/p/4790069.html

 如有疑问,欢迎留言交流。

不爱洗脸 | 园豆:186 (初学一级) | 2015-09-07 21:58
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册