질문 하지 않고 해보려고 했는데... 결국은 ... -.-;
지금 Indy10.xx component를 사용해서 TCP/IP 채팅을 맹글고 있습니다.
서버로 보내면, 서버에서 모든 클라이언트에게 뿌려주는 그런 류의... 류종택님이 인터넷에서
동영상 강좌까지 했던 그걸 인디 10.xx으로 하고 있습니다.
문제는,
클라이언트에서 서버로 데이타를 계속 빠르게 보내면 클라이언트가 안 die합니다.
클라이언트에서 서버로 보낸 글자가 다시 보낸 클라이언트로 잘 돌아와서 표현되구요.
참고로... 클라이언트에서는 타이머를 사용해서 타이머 틱마다 서버에서 오는 데이타를 체크합니다.
그런데, 잠시 손을 놓고 있노라치면(3~4초??) 바로 클라이언트가 얼어버립니다.
학술적 표현으로는 폼 위의 어떤 단추도 마우스를 받지 않는다.... ^^;
이곳 Q/A에서 살펴보니 IdAntiFreeze를 이용하라고 하는데, 이용해도 마찬가지입니다.
AntiFreeze의 Property가 몇개 있던데.... 뜻을 잘 모르니 셋팅은 그냥 default로 놔두었구요.
그리고 더 살펴보니 timeout이란 것도 필요하다고 ... 구구절절 글들이 써져 있는데, 잘 모르겠습니다.
왜 클라이언트가 얼어붙는거죠? (서버는 멀쩡합니다)
고수님들의 현답을 바라며....
인디 10버전대는 사용해본적은 없지만 뭐 비슷하겠죠...
아마도 클라이언트에서 서버의 데이터를 받을때 대기시간(TimeOut)없이 서버에서 데이터가 올때까지 무한정 기다리나 봅니다. 서버에서 데이터를 계속적으로 보내면 이상없이 작동하겠지만... 데이터를 보내지 않으면 받을때까지 한없이 기다리게되겠죠... 이때문에 얼게 되는것 같네요...
클라이언트 메소드들 보시면 TimeOut설정해서 서버의 데이터를 읽어오도록 하는 메소드들이 있을겁니다. 그걸 이용하세요. 그래야 서버로부터 일정시간동안 데이터가 안들어와도 작업을 마치고 다른넘들도 딴 일을 할 수 있도록 됩니다. 안그럼 데이터가 올때까지 한없이 기다리기만 합니다...
^^ 항상 즐코하세요...