안녕하세요, 도움을 드리기 전에 먼저 받게 되었습니다.
제가 구현하고자 하는 프로그램은 Delphi 3.0의 TbasicClientSocket을 써서
Client Socket의 동시접속 수를 실행중에 조절해가며
각Socket별로 데이타를 보내고 받는 것에 대한 simulation을 하는 것입니다.
저는 우선,
Client 소켓을 최대개수까지 미리 생성해 놓고 Read Evet가 발생될 때 마다
접속되어 있는 소켓의 처음부터 끝까지 for Loop을 돌려 어느 소켓이 데이타를
받았는지 판단하는 방식을 취하였습니다.
먼저 한가지 문제는 이런 방식이 과연 옳은가 하는 것입니다. 가끔씩 프로그램이 다운되는 경우가 발생합니다.
또하나는 50개 초과의 Socket을 열면 Access Violation이 난다는 것입니다.
이것은 Window Socket의 한계인가요? 혹시 조금이라도 도움되는 정보가 있으면
부탁드립니다.
그럼...
저도 님의 소스를 보지 않아서 정확한 원인을 알 수는 없지만..
통상 여지것 저의 경험으로는 Access Vilation 오류는
주로 메모리상의 pointer문제 였던것 같습니다..
object를 생성하거나..아니면..배열을 쓰신다면...
이와 관련된 부분을 다시 한번 뜯어 보심이 ...
도움이 될것 같네요..
그리고 참고로..
PC에서 생성가능한 socket의 수는 ..
제가 테스트해본결과로는 제가 회사에서 사용하는 제 PC에서는
38개가 MAX였고...
Windows NT에 RAM(512M)의 사양에서는 만개가 넘는 소켓을
맹글어도 끄덕없음을 알았습니다...
그러니깐..생성가능한 소켓의 MAX값은 100%시스템 리소스에
의존한다고 저는 생각을 하는데......
도움이 되셨는지..??
저도 여기서 많은 도움을 받았거던요...
특히 구창민님이나 하영재님..그리고 기타 많은분들........
항상 고맙게 생각하고 있습니다...
구창민님..이 나를 아직 기억하고 있을런가..??(^____^)