서버 재시작 시 포트 바인딩 단계에서 오류 발생함.
코드:
#include <iostream>
#include <sys/socket.h>
#include <netinet/in.h>
#include <unistd.h>
int main() {
int server_fd = socket(AF_INET, SOCK_STREAM, 0);
sockaddr_in address;
address.sin_family = AF_INET;
address.sin_addr.s_addr = INADDR_ANY;
address.sin_port = htons(8080);
if (bind(server_fd, (struct sockaddr*)&address, sizeof(address)) < 0) {
perror("bind failed");
return -1;
}
return 0;
}
오류: bind failed: Address already in use
시도: 프로세스 종료 후 재실행, 포트 번호 변경.
질문: 서버 종료 후 바로 재시작할 때 이 에러를 안 뜨게 하려면 socket 옵션을 어떻게 설정해야 합니까?
댓글3
모든 이야기1456
가벼운 안부부터 깊은 생각까지, 함께 나눠요.
총 1456개의 이야기
setsockopt로 SO_REUSEADDR 설정해주면 됨.
이거 안 하면 TIME_WAIT 때문에 계속 저럴걸요ㅋㅋ
구글에 검색하면 바로 나옴.