멀티쓰레드 소켓 서버 구현한다고 매일매일 개뻘짓의 연속인데요.
지금 이런식이거든요
t1 = new 쓰레드(server_run)
...
server_run()
{
Socket soc = accept()
ClientManager client(soc) // 접속된 클라이언트 소켓 정보로 클래스를 하나 구성하고
client.startclient() // 클래스 내부에 있는 수신/발신 쓰레드를 run
해쉬테이블(아이디, client); // 클래스는 해쉬테이블에 클라이언트의 아이디로 넣는다.
}
endserver()
{
foreach(해쉬테이블에서 아이디로 다 불러와서)
{
해당 아이디 ClientMannager 객체를 가지고
endclient() 메소드 실행. (endclient = 쓰레드 Abort())
}
....
Class ClientManager{
startclient_Run()
{
ctThread = new Thread(clientThread_Run); ctThread.IsBackground = true; ctThread.Start();
}
clientThread_Run()
{
이제 비동기 로 receive 시작하는데... ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ
}
endclient()
{
ctThread.Abort();
}
}
이런 구조 존나 병신이죠?
아 처음 해보는거라 이건 아닌데 싶으면서도 계속 하고 있음 ㅠㅠㅠㅠ
조언 좀 해주시면 안될까요 ㅠㅠ 멀티쓰레드 서버를 어떻게 구상해야할지 감이 안와요 ㅠ
댓글 0