버그 해결을 위한 모든 질문을 던져
0 votes
190 views
select가 실행되기전에 fd_set을 하나 더 만들어서 복사하는 과정들을 거치는 이유가 있나요 ..?

예를들어서 FD_SET(m_servSock,&m_readfds)를 한 후에 반복문 안에서

fd_set copy = m_readfds를 한 후 select함수를 실행하던데..

그리고, FD_ISSET을 통해서 FD_ISSET(m_servSock,&m_readfds)는 true값이 나오는데  FD_ISSET(m_servSock,&copy)는 false값이

계속나오는데 이유를 전혀 모르겠습니다.
asked (20 point) , 190 views

1 답변

0 votes
select 에 사용 하는 fd_set 구조체에는  확인검사를 하고자 하는 socket 들을 담아야 합니다.  

매번 select 호출을 할 때마다 FD_SET 매크로로 소켓을 담고 select 호출을 하기 번거로움이 있을때 소켓들이 담겨있는 readset 을 하나 만들어 놓고  이를 복사해서 사용 하는 방법도 가능 합니다.

fd_isset 매크로는 해당 세트에 해당 소켓이 존재 하는지 확인 해주는 매크로 함수 입니다.  

FD_ISSET(m_servSock,&m_readfds)  가 true 라면 해당 소켓이 readfds 에 있다는 것입니다.

 

 

조금 주제넘는 말씀일지 모르겠으나  일단 각 함수나 소켓모델의  작동 원리와 방식을 먼저 이해하고 소스를 분석 하셔야 발전이 있을 것입니다.  지금처럼의 분석과 질문은 갈길이 너무 멀군요.......
answered (316 point)
조언 감사합니다. 곧 졸업이라 마음이 급해져서 일단 만들다보니 막히는 부분이 많아지고 부족한 부분이 많이 있었던 것 같습니다.

버그 해결을 위해 도움을 구하고, 도움을 주세요. 우리는 그렇게 발전합니다.

throw bug 는 프로그래밍에 대한 전분야를 다룹니다. 질문,논의거리,팁,정보공유 모든 것이 가능합니다. 프로그래밍과 관련이 없는 내용은 환영받지 못합니다.

430 질문
564 answers
572 댓글
37,585 users