|
안녕하세요.
CBuilder를 이용해서 서버프로그램을 만들려고 하는데 잘안되네요. 쩝..
프로그램의 목적은 다음과 같습니다.
9901로 대기하면서 클라이언트가 접속하면 클라이언트에 대해서 쓰레드가 생성되어
쓰레드의 정보를 리스트 박스에 놓습니다.
그리고 사용자가 리스트 박스의 쓰레드 정보를 선택후 접속 종료 버튼을 누르면
관련 쓰레드를 종료시키는 기능을 수행하는 프로그램입니다.
첨부한 프로그램을 보시면 아시겠지만...
프로그램 수행후 시작 버튼을 누르면 9901번 포트로 리슨하고 있게 되는데..
이때 도스창을 열어서 telnet localhost 9901 하면 Welcome! 이라는 메시지가 나옵니다.
그리고 /q 라는 것을 입력하면 접속을 종료하게 됩니다.
그럼.. 제 예상으로 쓰레드가 종료할 것입니다. Unit2.cpp를 보면 "/q" 가 보이면
소켓을 종료하고 리턴이 되도록 되어 있으니까... ServerSocket1ClientDisconnect이 콜되어
접속이 종료가 되는데 문제는 이 함수에서 쓰레드에 대한 정보를 알 방법이 없어서
ListBox에 있는 정보를 지울수 없더라구요. (지금은 첫번째거가 지워지도록 되어 있습니다.)
만일 여러개가 접속했을때 그때는 문제가 되죠..
ListBox의 종료된 쓰레드의 정보가 안지워 질테니까요.
ServerSocket1ClientDisconnect() 안에서 쓰레드의 정보를 알수 있는 방법이 없을까요? (해결사항 1)
그리고 첫번째 클라이언트가 접속을 했다 종료한 후에 다른 클라이언트가 접속을 하면
Unit1.cpp의 ServerSocket1GetThread()에서 쓰레드 정보를 리스트 박스에 저장을 해야 하는데
이쪽으로 들어오지 않는것으로 보입니다.
왜 그러는지 잘 모르겠습니다. (해결사항 2)
소스를 보시면 아시겠지만 무척 간단한 프로그램입니다만..
클래스 사용에 아직 익숙치 않아서 어떻게 해야 원하는 정보를 얻을수 있을지
잘 모르겠네요..
아시는분 조언이나..
소스상에 추가해야 할 코딩을 알려주시면 정말 정말 감사드리겠습니다.
부탁드립니다.
|