在Linux Kernel Module中,编写Socket网络通信功能时,用bind绑定一个端口后,能正常收发数据,但是端口不及时释放的话,或者卸载模块时没有释放,再次加载模块,会出现端口被占用问题,需要等一会后才会释放。为了再次加载模块能绑定上同一端口,在内核模块中可以使用kernel_setsockopt()函数来设置端口可被使用,有参数SO_REUSEADDR,对应的操作如下:int rc;int val=1;rc = kernel_setsockopt(sock, SOL_SOCKET, SO_REUSEADDR,(char *)val, sizeof(val));
其中,最重点的就是SO_REUSEADDR参数,值为1。