- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <errno.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int sock = socket(AF_LOCAL, SOCK_STREAM, 0);
if(sock == -1)
printf("Error\n");
int enable=1;
int ret = setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (const char*)&enable, sizeof(enable));
if(ret==-1)
perror("Error");
else
printf("Sucess\n");
int optval;
int optlen;
ret = getsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &optval, &optlen);
if(ret==0)
{
if(optval != 0)
printf("SO_REUSEADDR enabled\n");
else
printf("SO_REUSEADDR disabled\n");
}
else
{
if(errno==EBADF)
printf("The argument sockfd is not a valid file descriptor.\n");
else if(errno==EFAULT)
printf("The address pointed to by optval is not in a valid part of.the process address space. For getsockopt(), this error may also be returned if optlen is not in a valid part of the process address space.\n");
else if(errno==EINVAL)
printf("optlen invalid in setsockopt(). In some cases this error.can also occur for an invalid value in optval (e.g., for the IP_ADD_MEMBERSHIP option described in ip(7)).\n");
else if(errno==ENOPROTOOPT)
printf("The option is unknown at the level indicated.\n");
else if(errno==ENOTSOCK)
printf("The file descriptor sockfd does not refer to a socket.\n");
}
char *name;
name="ccmni0";
if( (setsockopt(sock, SOL_SOCKET, SO_BINDTODEVICE, name, 6)) < 0)
printf("SO_BINDTODEVICE error\n");
char *arr[7];
int ss = 7;
ret = getsockopt(sock, SOL_SOCKET, SO_BINDTODEVICE, &arr, &ss);
if(ret==0)
{
printf("SO_BINDTODEVICE: %s\n", arr);
}
else
{
if(errno==EBADF)
printf("The argument sockfd is not a valid file descriptor.\n");
else if(errno==EFAULT)
printf("The address pointed to by optval is not in a valid part of.the process address space. For getsockopt(), this error may also be returned if optlen is not in a valid part of the process address space.\n");
else if(errno==EINVAL)
printf("optlen invalid in setsockopt(). In some cases this error.can also occur for an invalid value in optval (e.g., for the IP_ADD_MEMBERSHIP option described in ip(7)).\n");
else if(errno==ENOPROTOOPT)
printf("The option is unknown at the level indicated.\n");
else if(errno==ENOTSOCK)
printf("The file descriptor sockfd does not refer to a socket.\n");
}
}
Комментарии (0) RSS
Добавить комментарий