C언어 소켓사용 질문입니다.
바람
C언어로 프로야구를 구현하는 데 크나큰 애로사항이 발생하여 질문올립니다.
hThread[0]=(HANDLE)_beginthreadex(NULL,0,HandleClnt,(void *)&clntSocks[0].s,0,NULL);//스레드생성.
hThread[1]=(HANDLE)_beginthreadex(NULL,0,HandleClnt,(void *)&clntSocks[2].s,0,NULL);//스레드생성.
WaitForMultipleObjects(2,hThread,FALSE,INFINITE);
for(i=0;iclntcnt;i++)
{
if(clntSocks[i].s==SOCKET_ERROR)
{
for(j=i;jclntcnt;j++)
clntSocks[j]=clntSocks[j+1];
i--;
}
}
hthread1=(HANDLE)_beginthreadex(NULL,0,HandleClnt,(void *)&clntSocks[0].s,0,NULL);//스레드생성.
WaitForSingleObject(hthread1,INFINITE);
//HandleClnt에게 (void*)&hClntSock 인자 전달
서버에서 클라이언트들의 수가 전부 받아지면 경기를 진행할 스레드를 생성합니다. 스레드핸들은 내부에서 1경기를 진행하는 스레드이고 hThread[]는 1차전으로 4개 클라이언트를 넣어 서로 경기를 진행토록 합니다. 스레드가 끝날 때 패자를 접속종료시키고 승자들만으로 결승을 치루는 형식입니다만....
돌려보면 클라이언트가 경기진행을 위해 입력을 하게되면 서버가 터지네요;;;;;
아무래도 스레드를 2개생성하는데 같은 스레드핸들을 쓰다보니
받고있는 클라이언트가 자기쪽인지 아닌지 구분을 못해서 그런 것 같은데 단순히 이름만 다른 스레드핸들을 하나더 만들어 주어야 할까요?아니면 뭔가 다른 방법이 있을까요?