Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1673639
  • 博文数量: 782
  • 博客积分: 2455
  • 博客等级: 大尉
  • 技术积分: 4140
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-06 21:37
个人简介

Linux ,c/c++, web,前端,php,js

文章分类

全部博文(782)

文章存档

2015年(8)

2014年(28)

2013年(110)

2012年(307)

2011年(329)

分类:

2012-01-17 09:48:42

1.socket SOCK_RAW支持的问题
  1. #include
  2. #include
  3. #include
  4. #include
  5. void main()
  6. {
  7. int fd;
  8. if((fd = socket(AF_INET, SOCK_RAW, IPPROTO_IP)) == -1)
  9. perror("socket failed\n");
  10. }
在我的fedora 11上执行,结果:
[root@localhost socket]# ./1test
socket failed
: Protocol not supported
为什么?
2.struct sockaddr_in6强制转换为sockaddr的问题
在一般的ipv6应用程序里,我们常可以看到这样的代码:
  1. struct sockaddr_in6 client_address;
  2. client_sockfd = accept(server_sockfd,
  3. (struct sockaddr *)&client_address, &client_len);
测试发现:
  1. #include
  2. #include
  3. #include
  4. void main()
  5. {
  6. printf("sizeof sockaddr is %d\n", sizeof(struct sockaddr));
  7. printf("sizeof sockaddr_in is %d\n", sizeof(struct sockaddr_in));
  8. printf("sizeof sockaddr_in6 is %d\n", sizeof(struct sockaddr_in6));
  9. }
sizeof(struct sockaddr) is 16
sizeof(struct sockaddr_in) is 16
sizeof(struct sockaddr_in6) is 28
那么sockaddr_in6强制转换为sockaddr之后,不就溢出了么?
3.
阅读(674) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~