对,解决办法如superdreamer(超级梦想家)。
int sockfd = socket( PF_INET, SOCK_STREAM, 0 ); int opt = 1; int len = sizoef(opt); setsockopt( sockfd, SOL_SOCKET, SO_REUSEADDR, &opt, (socklen_t *)&len ); ...... bind( sockfd, ..... ); 这样就不会出现bind同一个地址的问题了。 如果你不设置,就得等两分钟以后才能再bind同一个地址,这是协议规定的 |
对,解决办法如superdreamer(超级梦想家)。
int sockfd = socket( PF_INET, SOCK_STREAM, 0 ); int opt = 1; int len = sizoef(opt); setsockopt( sockfd, SOL_SOCKET, SO_REUSEADDR, &opt, (socklen_t *)&len ); ...... bind( sockfd, ..... ); 这样就不会出现bind同一个地址的问题了。 如果你不设置,就得等两分钟以后才能再bind同一个地址,这是协议规定的 |
问:
程序非正常退出后再重启时就报错,说“端口(还是ip?记不清了)正在使用,无法bind”。好像设置一个参数就能强制bind了,怎么设?
答:
解决办法
int sockfd = socket( PF_INET, SOCK_STREAM, 0 );
int opt = 1;
int len = sizoef(opt);
setsockopt( sockfd, SOL_SOCKET, SO_REUSEADDR, &opt, (socklen_t *)&len );
......
bind( sockfd, ..... );
这样就不会出现bind同一个地址的问题了。
如果你不设置,就得等两分钟以后才能再bind同一个地址,这是协议规定的
如果是端口的话,用SO_REUSEPORT选项。
程序同上,将SO_REUSEADDR改为SO_REUSEPORT。