在Linux c后台开发中, 经常需要修改一段服务器代码过后,编译连接然后重启服务器进程。
如果两次服务器启动间隔时间过短,系统将不允许。因为上一次启动服务器所使用端口的被占用了。即使上一次服务器进程已经被关闭,但系统处于安全考虑需要占用一段时间。但稍后该端口自动释放。除开修改端口来解决解决问题,那么还有一种一劳永逸,屡试不爽的方法。
一般的后台服务器进程大概这样:
先socket()申请一个合法的套接字,这时如果直接bind、listen,就不能再短时间内重启服务器(因为端口被占用)。
Linux c中的setsockopt函数可以解决这个问题。在socket()得到套接字后,调用此函数即可:
int sock_reusr = 1;
setsockopt(*listenfd ,
SOL_SOCKET,
SO_REUSEADDR,
(char *)&sock_reuse,
sizeof(sock_reuse));
之前,没有接触这一函数,在后台开发上浪费了很多的时间。
Dylan 2013-3-16
16 March 2013 会持续更新