소켓프로그래밍 하고 있는데, gcc 버젼에 따라 select가 깨지는
글쓴이: 익명 사용자 / 작성시간: 목, 2002/06/20 - 8:20오후
우선 지금 상황이 server로부터 server에 접속된 여러 ip목록을 client가
받아서, 받은 ip목록에 있는 ip에 키를 넘겨주는 프로그램을 짜고 있는
데..
여러 클라이언트가 필요하다보니 다른 사람들 컴에 깔린 리눅스를 이용하
였는데요..
client프로그램에 select를 사용하였는데,
이게 한곳은 잘되는데 다른곳에서 실행시키면 block이 안걸리고 무한 루
프가 도는겁니다.
그래서 뭐가 틀렸는지 이거 저거 다해봤는데...
gcc 버젼 차이인가 해서 버젼을 봤더니 잘되는거는 2.91.66 이더군요.
무한 루프 도는곳은 2.96....
쩝 당황스럽다는...
Forums:
Re: 소켓프로그래밍 하고 있는데, gcc 버젼에 따라 select가 깨
저도 그런경우가 발생할때가 있던데 왜 그런지는 잘 모르겠고요
컴파일할때 최적화 옵션을 -O2 정도로 주고 컴파일 해보세요
그러면 제대로 돌아가는 경우가 있더군요
그리고 이건 여담인데 select또는 poll을 이용해서 mutiplexing I/O
를 통해 서비스하는 서버를 만들면 접속요청이 짧은시간에 과도하게
들어올경우 이벤트를 놓치는 경우가 있다더군요 실제로 비슷한 프로
그램을 만들어서 테스트를 해보니깐 그런것 같고...
이런 문제도 실제로 서비스해야되는 상황이면 문제가 될 소지가 있을
것 같은데 해결하기 위한 적절한 방법이 있을까요?
뭐 connetion당 프로세스나 스레드를 대응시키는 방법 말구요...
Re^2: 답변 감솨^^
답변 감솨해요(_ _)a
요새는 저도 님처럼 과도한 요청이 동시에 들어올 경우때문에
머리 싸메고 있네요. 테스트는 클라이언트 4개를 두고 하는데...의외로
안깨지고 잘되는거 같아서요...(block이 걸려 잘되는듯?)
그래도 혹시나 하는 마음에.... fork()를 염두해 두고 있지만...
후 즐삽질^0^~
댓글 달기