求教:socket初始化在bind时,出现adress already in use?
socket初始化在bind时,出现adress   already   in   use.请问如何修改? 
 我用虚拟机下的红帽9GCC   编译运行的,用netstat查处于TIMEWAIT状态,执行多次也bind不上,不知道时什么原因?求教!     
 static   int 
 initialize_listen_socket(   usockaddr*   usaP,   int   port) 
 { 
             int   listen_fd; 
             int   i;   
             memset(   usaP,   0,   sizeof(usockaddr)   ); 
             usaP-> sa.sa_family   =   AF_INET;             
             usaP-> sa_in.sin_addr.s_addr   =   htonl(   INADDR_ANY   ); 
             usaP-> sa_in.sin_port   =   htons(   port   );         
             listen_fd   =   socket(   usaP-> sa.sa_family,   SOCK_STREAM,   0   );    
             if   (   listen_fd    <   0   ){ 
 	perror(    "alarm:   socket "   ); 
 	return   -1; 
             }         
             (void)   fcntl(   listen_fd,   F_SETFD,   1   );      	 
             i   =   1; 
             if   (   setsockopt(   listen_fd,SOL_SOCKET,   SO_REUSEADDR,   (char*)   &i,   sizeof(i)   )    <   0   )       
             { 
 	perror(    "alarm:   setsockopt "   ); 
 	return   -1; 
             }      
             if   (   bind(   listen_fd,   &usaP-> sa,   sizeof(struct   sockaddr_in)   )    <   0   )       
             { 
 	perror(    "alarm:   bind "   ); 
 	return   -1; 
             }         
             if   (   listen(   listen_fd,   1024   )    <   0   )       
             { 
 	perror(    "alarm:   listen "   ); 
 	return   -1; 
             }  	 
             return   listen_fd; 
 }
------解决方案--------------------照理说设置了端口复用就可以了。你可以试一下其他系统,看看是否rh9的原因。
------解决方案--------------------1.首先,运行ps -aux |grep lsnr ,看一下是否有进程占用 
 2.有的话kill掉,就可以了
------解决方案--------------------lsof -i:22或者netstat -an|grep 22察看