작성
·
307
0
궁금한것이 생겨서 질문남깁니다.
1. linger옵션을 이용해서
onoff를 1로 두고, 시간을 적당히 셋팅한 후에
위에 옵션을 적용한 소켓을 대상으로 shutdown을 호출해서
SD_SEND로 Send를 막으면 어떻게 되는지 궁금합니다.
2. 상대방이 할말이 있어도 closesocket을 호출해도 상관은 없다는 점에 있어서 만약, 아주 극적이게도 아이템 거래같은 중요한 정보가 서버로 날라오는 도중에 서버에서 closesocket을 호출해서 닫혀 있으면 해당 정보가 DB에 적용되지 않을 것 같은데, 이런 경우는 없는 것인지 궁금합니다.
답변 2
0
0
1.
shutdown은 정확히 말하면 어플리케이션 버퍼에서
커널 버퍼로 복사할 수 없게 만드는 쪽에 가깝기 때문에
기존에 커널 버퍼에 있던 내용의 전달까지 막는 것은 아닙니다.
2.
DB에 적용되지 않는 경우를 예방하기 위해 보통 먼저 DB에 정보를 먼저 저장한 다음,
DB 저장이 성공적으로 이루어지면 해당 정보를 서버 메모리에도 이어서 적용을 하게 되는데요.
이 때 이런 저런 이유로 통신이 끊긴다거나 서버 크래시가 난다면
어차피 서버를 다시 띄울 때 DB에서 정보를
다시 긁어서 적용할 것이기 때문에 아무런 문제가 없습니다.