개인활동/잡동사니팁들

Bind error 방지하기

무늬만엄마 2007. 4. 3. 16:13

Bind error 방지하기

 

int make_sock(int port, int users)
{
 int  sock;
 struct  sockaddr_in  my_addr;
 
 int  iSockOpt;
 
 if((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0)
 {
  perror("SOCKET");
  return (-1);
 }
 
 my_addr.sin_family = AF_INET;
 my_addr.sin_port = htons(port);
 my_addr.sin_addr.s_addr = INADDR_ANY;
 bzero(&(my_addr.sin_zero), 8);    // set the rest of the struct
 
 // prevent bind error
 iSockOpt = 1;
 setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &iSockOpt, sizeof(iSockOpt));

 
 if(bind(sock, (struct sockaddr *)&my_addr, sizeof(struct sockaddr)) < 0)
 {
  perror("SOCKET BIND");
  close(sock);
  return (-1);
 }
 
 if(listen(sock, users) < 0)
 {
  perror("SOCKET LISTEN");
  close(sock);
  return (-1);
 }
 
 return sock;
}

 

해당 구문은 반드시 bind 함수 앞에 선언되어야 하며,

SockRcvBufClear( ... ) 등을 같이 사용할 때도 반드시 bind 앞에 선언해야 한다.

'개인활동 > 잡동사니팁들' 카테고리의 다른 글

reSIProcate 설치(1) - Solaris 10  (0) 2007.05.29
버클리 DB 설치법  (0) 2007.04.20
close_wait time 변경  (0) 2007.04.03
gcc 컴파일 옵션들  (0) 2006.12.13
freeTDS+unixodbc설치및셋팅(solaris8/SUN)  (0) 2006.12.13