C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[4512] >> 테스팅 결과 << 대충 다음과 같은 결과를 얻었슴다 (( 해석 좀!!))
이호경 [] 3168 읽음    2000-12-01 00:00
위에서 가르쳐주신 소켓에러를 가로채는 방법을 사용했더니 프로그램이 더이상 소켓을 사용하지 못하는 문제가 생기더군요.
그래서 여기저기를 다시금 기웃거리다가 소켓을 close하는 방법이 2가지라는 사실을 알게 되었습니다.

방법1) ClientSocket1->Socket->Close()
방법2) ClientSocket1->Close()

저는 지금껏 (방법2)로 소켓을 닫아주었는데 이것이 소켓을 완전히 닫아주는게 아닌 듯 싶습니다.

여기서 저와 같은 문제로 고생하시는 분을 위해 몇줄에 걸쳐 제가 겪은 에러에 대해서 시간대 별로 정리를 해보면 이렇습니다.

1) 서버소켓 접속시 에러가 발생하는 경우에 소켓에러 메시지 창이 직접 열리는 문제로 고심
2) 에러처리 루틴에 ErrorCode = 0; 라인을 한줄 추가하여 해결
3) 서버소켓 접속에 실패하여 에러가 발생하면 상기의 (방법2)로 클라이언트 소켓을 닫아주고는 다시 서버소켓 접속을 시도하는 루프 구성
4) 처음엔 문제 없이 서버 접속을 시도-실패-시도-실패- 하는 루프를 실행하지만 247번째 에러 발생시에는 새로운 형태의 서버 접속 에러발생
5) 관리자님이 일러주신 소켓에러를 가로채는 방법을 적용해봤으나 프로그램에서 더 이상 소켓을 사용하지 못하는 문제 발생
6) 새로운 방안을 찾아헤매다가 상기의 (방법 1)로 소켓을 닫아줄 수도 있다는 사실 발견
7) (방법 1)을 (방법 2)의 코드를 모두 대체했더니 시스템이 다운되는 현상이 발생
8) 원인을 찾아헤매다가 불필요하게 (방법 1)로 소켓을 close해주는 경우에 스택오버플로 메시지 등과 함께 시스템이 다운된다는 사실 발견
10) (방법 1)을 서버접속 에러함수에만 국한시켜서 적용했더니 상기 247번째 발생하던 에러표시가 사라짐 -> 현재 1137번이 넘었는대도 계속 잘 진행 중에 있습니다!!

* 상기의 경험과 에러해결을 위해 여기저기서 주워읽은 내용을 토대로 나름대로 내린 결론은 다음과 같습니다.
클라이언트 소켓은 최대 256개를 열수가 있다. 제가 상기에서 247번째에서 발생하는 에러를 경험한 것은 (방법2)로 소켓을 close해준 데 있다. 이론적으로는 256개의 소켓을 열수가 있지만 이보다 적은 수의 소켓을 열수가 있는데, 본인의 경우 사무실에서는 247번째에서 에러가 발생하였고 집에서는 251번째 혹은 253번째에 에러가 발생하였다.
예상되는 이유는 (방법2)가 실질적으로 소켓을 닫아주지 않기 때문이다???????
즉 (방법1)이 실제적으로 현재의 소켓을 닫아준다고 생각된다.

!!!!!  고수님 이거 제 결론이 맞는 겁니까??  !!!!!
!!!!!  시원스럽게 정리 좀 해주세요          !!!!!

+ -

관련 글 리스트
4504 클라이언트에서 서버 접속시 에러(Errorcode =0 후에도 발생) 이호경 3230 2000/12/01
4505     Re:클라이언트에서 서버 접속시 에러(Errorcode =0 후에도 발생) 관리자 3675 2000/12/01
4512         >> 테스팅 결과 << 대충 다음과 같은 결과를 얻었슴다 (( 해석 좀!!)) 이호경 3168 2000/12/01
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.