开发经验小结(网络编程(2))---套接字选项
2009-05-19 09:42
260 查看
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.常用套接字选项的运用
(1).SO_REUSEADDR选项
设置该选项, 可以确保服务器快速重启时,不会因为监听的端口被占用而失败
(2).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;
(3).SO_LINGER选项
设置CLOSE套接字的延时,以便处理缓冲区中的数据。一般与SHOUTDOWN一起使用
可以减少CLOSE_WAIT状态
(4).SO_CONNECT_TIME选项
通过
getsockopt获取该选项的值。可以用来判断这个SOCKET是否已经超时。是防止攻击服务器的好方法
(5).设置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);
}
}
3.我开发过程中常用的就这些了。希望大家多多补充
相关文章推荐
- 开发经验小结(网络编程(1))---基础小知识
- 开发经验小结(网络编程(3))--网络模型
- 基于BootStrap Metronic开发框架经验小结【七】数据的导入、导出及附件的查看处理
- 基于BootStrap Metronic开发框架经验小结【五】Bootstrap File Input文件上传插件的用法详解
- 基于BootStrap Metronic开发框架经验小结【七】数据的导入、导出及附件的查看处理
- 设计调查选项处理&Answer实体的分析设计&开发的经验技巧&数据库使用等
- Phonegap + HTML5 开发经验小结
- PDA开发经验小结
- 软件合作开发:2012年年底给苏州工业园区某家软件企业实施C#.NET软件开发系统框架的经验小结
- 基于BootStrap Metronic开发框架经验小结【六】对话框及提示框的处理和优化
- 基于BootStrap Metronic开发框架经验小结【八】框架功能总体界面介绍
- PDA开发经验小结
- 跨平台C++程序开发经验小结
- 跨平台C++程序开发经验小结
- 给浙江杭州某猎头公司开发猎头行业软件.NET接口的经验小结分享 推荐
- PDA开发经验小结
- 基于BootStrap Metronic开发框架经验小结【五】Bootstrap File Input文件上传插件的用法详解
- Phonegap + HTML5 开发经验小结
- 个人开发经验小结
- 基于BootStrap Metronic开发框架经验小结【四】Bootstrap图标的提取和利用