2010-11-27 3 views
-1

죄송합니다. 제 질문은 간단합니다.C 소켓에서 "select"

내 서버 프로그램에서 기존 연결의 데이터뿐 아니라 새로운 연결을 찾기 위해 select()를 사용하고 있습니다. 그러나 하나의 연결/소켓에서 데이터를 가져올 때 내 프로그램은 데이터를 읽고이를 배열에 저장합니다. 여기서 서버는 클라이언트에 회신하지 않습니다 (클라이언트는 recv() 모드에 있음). 이제 서버가 select() 호출로 돌아 가면 거기에 붙어 있습니다. 이유를 모르겠다. 내 의도는, [데이터가 없다면] 서버가 선택해야한다는 것입니다. 나는 select()에서도 timeout을 유지했다.

이 점에 대한 제안은 큰 도움이 될 것입니다.

+3

당신의 select loop = – nos

+0

에서 매번'fd_set'을 다시 초기화 하시겠습니까? 아닙니다. 필요한가요? –

+2

예. 'select'가 반환 된 후에,'fd_set'의 유일한 멤버는 준비된 멤버가됩니다. 그것은'select'가 당신에게 어떤 준비가되었는지 알려주는 것입니다. –

답변

-1

해결되었습니다. 시간 초과가 더 일찍 제대로 작동하지 않는 것 같습니다. 나는 그것을 고쳤다. 지금은 잘 작동하고 있습니다. 모두에게 감사드립니다. 나는 의심의 여지가 있다면, 당신을 모두 핑질합니다.

+0

어쩌면이 대답을 "수락 됨"으로 표시 할 수 있으므로 질문에 답이 표시되지 않습니다. 환호 :-) – Lee

+0

예 리 ..하지만 내가 "받아 들였습니다"라고 말하면, 2 일 후에 만 ​​대답을 수락 할 수 있습니다. 그래서, 2 일 후에 그것을 할 것입니다. –

관련 문제