- #include
-
#include
-
#include
-
#include
- void main()
- {
- int fd;
- if((fd = socket(AF_INET, SOCK_RAW, IPPROTO_IP)) == -1)
- perror("socket failed\n");
- }
[root@localhost socket]# ./1test
socket failed
: Protocol not supported
为什么?
2.struct sockaddr_in6强制转换为sockaddr的问题
在一般的ipv6应用程序里,我们常可以看到这样的代码:
- struct sockaddr_in6 client_address;
- client_sockfd = accept(server_sockfd,
- (struct sockaddr *)&client_address, &client_len);
- #include
-
#include
-
#include
- void main()
- {
- printf("sizeof sockaddr is %d\n", sizeof(struct sockaddr));
- printf("sizeof sockaddr_in is %d\n", sizeof(struct sockaddr_in));
- printf("sizeof sockaddr_in6 is %d\n", sizeof(struct sockaddr_in6));
- }
sizeof(struct sockaddr_in) is 16
sizeof(struct sockaddr_in6) is 28
那么sockaddr_in6强制转换为sockaddr之后,不就溢出了么?
3.