随笔-18  评论-11  文章-12  trackbacks-0
现象:服务器端意外退出后马上重启,提示端口绑定错误,端口正在使用中。稍等一会后再次重启,可以正常运行。
可以设置socket的选项为SO_REUSEADDR,使其允许完全重复的绑定。
    int rc = 1;
    setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (char *)&rc, sizeof(rc));
    bind(fd, (struct sockaddr *) &addr, sizeof(addr));

setsockopt的函数原型为:
       int getsockopt(int s, int level, int optname, void *optval, socklen_t *optlen);
       int setsockopt(int s, int level, int optname, const void *optval, socklen_t optlen);
       其中optval为选项的开关标志符,例如我使用rc=1开启SO_REUSEADDR。

fcntl 文件控制,file control,譬如控制socket为非阻塞IO,信号驱动IO等。类似的有ioctl
posted on 2009-01-06 11:52 ronliu 阅读(1392) 评论(0)  编辑 收藏 引用 所属分类: LinuxNet Programming

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理