UNIX网络编程——经常使用的套接字选项
2013-07-24 15:53
155 查看
1.设置/获取套接字选项
int setsockopt(int socket, int level, int option_name, const void *option_value, socklen_t option_len);
int getsockopt(int socket, int level, int option_name, void *restrict option_value, socklen_t *restrict option_len);
2.常用套接字选项的运用
SO_REUSEADDR选项
设置该选项, 可以确保服务器快速重启时,不会因为监听的端口被占用而失败。
SO_KEEPALIVE选项
服务器端设置该选项,可以定时检测客户端的状态。如果客户端因为异常退出, 则套接字被关闭,检测的默认时间间隔为2小时。 如何设置时间间隔?
修改 /ect/sysctl.conf 添加如下3行:
SO_LINGER选项
如果选择此选项,close或 shutdown将等到所有套接字里排队的消息成功发送或到达延迟时间后才会返回。否则,调用将立即返回。
SO_CONNECT_TIME选项
通过 getsockopt获取该选项的值。可以用来判断这个SOCKET是否已经超时。是防止攻击服务器的好方法。
设置SOCKET为非阻塞
static void setnonblocking(int sock)
{
int opts;
opts=fcntl(sock,F_GETFL);
if(opts<0)
{
exit(1);
}
opts = opts|O_NONBLOCK;
if(fcntl(sock,F_SETFL,opts)<0)
{
exit(1);
}
}
int setsockopt(int socket, int level, int option_name, const void *option_value, socklen_t option_len);
int getsockopt(int socket, int level, int option_name, void *restrict option_value, socklen_t *restrict option_len);
2.常用套接字选项的运用
SO_REUSEADDR选项
设置该选项, 可以确保服务器快速重启时,不会因为监听的端口被占用而失败。
SO_KEEPALIVE选项
服务器端设置该选项,可以定时检测客户端的状态。如果客户端因为异常退出, 则套接字被关闭,检测的默认时间间隔为2小时。 如何设置时间间隔?
修改 /ect/sysctl.conf 添加如下3行:
net.ipv4.tcp_keepalive_intvl=20//失败探测间隔时间20秒 net.ipv4.tcp_keepalive_probes=3//失败探测次数 net.ipv4.tcp_keepalive_time=60//间隔时间然后重启内核:sysctl -p;
SO_LINGER选项
如果选择此选项,close或 shutdown将等到所有套接字里排队的消息成功发送或到达延迟时间后才会返回。否则,调用将立即返回。
SO_CONNECT_TIME选项
通过 getsockopt获取该选项的值。可以用来判断这个SOCKET是否已经超时。是防止攻击服务器的好方法。
设置SOCKET为非阻塞
static void setnonblocking(int sock)
{
int opts;
opts=fcntl(sock,F_GETFL);
if(opts<0)
{
exit(1);
}
opts = opts|O_NONBLOCK;
if(fcntl(sock,F_SETFL,opts)<0)
{
exit(1);
}
}
相关文章推荐
- UNIX网络编程——经常使用的套接字选项
- UNIX网络编程——经常使用的套接字选项
- 综合使用套接字选项的例子,如设置套接字选项大小,设置套接字地址重用
- 使用 SQL Server 时需要经常用到的几个设置选项!
- UNIX网络编程——套接字选项(setsockopt)
- UNIX网络编程——套接字选项(SOL_SOCKET级别)
- UNIX网络编程——通用套接字选项
- UNIX网络编程 TCP套接字选项
- 使用 SQL Server 时需要经常用到的几个设置选项
- 使用时需要经常用到的几个设置选项!
- UNIX网络编程——套接字选项(setsockopt)
- UNIX网络编程——套接字选项(SOL_SOCKET级别)
- UNIX网络编程——通用套接字选项
- UNIX网络编程——套接字选项(心跳检测、绑定地址复用)
- UNIX网络编程——套接字选项(setsockopt)
- UNIX网络编程——套接字选项(SOL_SOCKET级别)
- UNIX网络编程——通用套接字选项
- UNIX网络编程——套接字选项(心跳检测、绑定地址复用)
- 使用SQL Server时需要经常用到的几个设置选项
- gcc/g++ 命令的经常使用选项