//------------------------------------------------------------------
// Set SO_REUSEADDR & SO_REUSEPORT options
//------------------------------------------------------------------
int optval;
optval = 1;
//int setsockopt(int s, int level, int optname, const void *optval, socklen_t optlen);
if (setsockopt(listening_socket, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval)) < 0)
{
fprintf(stderr, "[%d]Set socket option SO_REUSEADDR failed: %s\n", getpid(), strerror(errno));
}
else
{
fprintf(stderr, "[%d]Set socket option SO_REUSEADDR successfully.\n", getpid());
}
#ifdef SO_REUSEPORT
optval = 1;
//int setsockopt(int s, int level, int optname, const void *optval, socklen_t optlen);
if (setsockopt(listening_socket, SOL_SOCKET, SO_REUSEPORT, &optval, sizeof(optval)) < 0)
{
fprintf(stderr, "[%d]Set socket option SO_REUSEPORT failed: %s\n", getpid(), strerror(errno));
}
else
{
fprintf(stderr, "[%d]Set socket option SO_REUSEPORT successfully.\n", getpid());
}
#endif
// Set SO_REUSEADDR & SO_REUSEPORT options
//------------------------------------------------------------------
int optval;
optval = 1;
//int setsockopt(int s, int level, int optname, const void *optval, socklen_t optlen);
if (setsockopt(listening_socket, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval)) < 0)
{
fprintf(stderr, "[%d]Set socket option SO_REUSEADDR failed: %s\n", getpid(), strerror(errno));
}
else
{
fprintf(stderr, "[%d]Set socket option SO_REUSEADDR successfully.\n", getpid());
}
#ifdef SO_REUSEPORT
optval = 1;
//int setsockopt(int s, int level, int optname, const void *optval, socklen_t optlen);
if (setsockopt(listening_socket, SOL_SOCKET, SO_REUSEPORT, &optval, sizeof(optval)) < 0)
{
fprintf(stderr, "[%d]Set socket option SO_REUSEPORT failed: %s\n", getpid(), strerror(errno));
}
else
{
fprintf(stderr, "[%d]Set socket option SO_REUSEPORT successfully.\n", getpid());
}
#endif