|
또 이런 초보적인 질문을 합니다..
이해가 안가는 부분이 있어서 인데요..
아주 간단하게 c/s 프로그램을 만들었습니다.
쓰레드를 이용해서 여러명이 접속도 가능하게 했구요..
제가 궁금한것은.. 서버에서
accpet 부분을 쓰레드 안에서 시행하게 했습니다.
그리고 accept에 성공하면
또 다른 쓰레드로 recv()를 돌려서 클라이언트에게
받은 메시지가 있으면 메시지 박스를 띄었구요..
아래를 보시면 이해가 더 빠르실거에요..
[[ thread1 ]]
for(;;) {
if( accept성공 )
{
MessageBox(접속성공);
thread2 호출;
}
}
[[ thread2 ]]
for(;;) {
if( 받은데이터가 있으면)
{
MessageBox(받은데이터 출력);
}
}
이런 식으로 했는데..
클라이언트 프로그램을 여러개 띄어놓고 테스트를 해보면..
클라이언트들이 접속할때마다 서버에서는 "접속성공"이라는 메시지를 보여줍니다.
하지만 클라이언트의 (테스트용으로 만든) 메시지를 보내기 버튼을 누르면
마지막에 접속에 성공한 클라이언트의 메시지만 뿌려주고요..
그 전에 접속해있던 클라이언트의 메시지보내기버튼을 누르면 아무 반응도 안하더군요..
제가 생각할때는 이런식으로 하면 당연히 될줄 알았는데.. -_-;;
항상 도움만 받아서 죄송합니다~
방법에 문제가 있다거나 하는 부분을 가르쳐주시면 감사하겠습니다. ^^
|