現(xiàn)象:服務(wù)器端意外退出后馬上重啟,提示端口綁定錯(cuò)誤,端口正在使用中。稍等一會后再次重啟,可以正常運(yùn)行。
可以設(shè)置socket的選項(xiàng)為SO_REUSEADDR,使其允許完全重復(fù)的綁定。
int rc = 1;
setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (char *)&rc, sizeof(rc));
bind(fd, (struct sockaddr *) &addr, sizeof(addr));
setsockopt的函數(shù)原型為:
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為選項(xiàng)的開關(guān)標(biāo)志符,例如我使用rc=1開啟SO_REUSEADDR。
fcntl 文件控制,file control,譬如控制socket為非阻塞IO,信號驅(qū)動(dòng)IO等。類似的有ioctl
posted on 2009-01-06 11:52
ronliu 閱讀(1436)
評論(0) 編輯 收藏 引用 所屬分類:
Linux 、
Net Programming