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 앞에 선언해야 한다.
|