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
[41368] Re:소켓에서 데이타전송시 질문입니다.
유영인 Cuperido [cuperido] 1461 읽음    2005-08-08 14:20
WSAEWOULDBLOCK 에러는 엄밀히 말해서 치명적인 에러는 아니고요,
그냥 이번 턴에 자료를 전부 다 쓸 수 없었다 라는 것입니다.

nonblocking 에서 잘 나오는 이유는, blocking은 전부 데이터를 보낼때까지
대기하는 반면, nonblocking 모드는 접속하기/끊기/전송 등에서 한번에
다 처리를 하지 못할 경우 (linger 에서 설정한 타임이 넘을 경우)
WSAEWOULDBLOCK 에러를 냅니다.

이 에러가 나면, FD_WRITE 에러가 발생합니다. select시에 FD_READ
발생을 처리하는 것처럼, FD_WRITE 가 발생하면 (혹은 WSAEWOULDBLOCK이 발생하면)
send 에서 보낸 데이터를 제외한 나머지 데이터를 다음 신호에 보내면 됩니다.

계속 주기적으로 WSAEWOULDBLOCK 이 발생한다면, 서버측에서 더이상 수신
진행을 할 수 없는 이유도 함께 확인해 보시는 것이 좋을것 같습니다.


cuperido

오전&오후 님이 쓰신 글 :
: 소켓을 통해서 데이타 전송시 send()함수를 이용해서 데이타를 전송했습니다.
: 그런데 데이타가 좀 커질경우 데이타를 잘보내다가 특정구간에서 send(); 함수에서
: 리턴값이 -1이 계속 나옵니다.
: 그래서 WSAGetLastError()함수로 에러값을 얻어보니 WSAEWOULDBLOCK
: 이 에러가 나던데 이유가 뭔지 잘모르겟네요 ;;
: 도움말을 보면 소켓이 blocking이어야되는데 nonblocking이라서 발생한다고 나오던데
: 그럼 처음부터 에러가 나야되는데 데이타를 잘보내다가 갑자기 어느구간만 가면 이 에러가 나는데
: 이유를 도저히 모르겠네요
:
: 데이타 사이즈가 작으면 괜찮은데 데이타 사이즈가 커지면 이런문제가 생기네요
: 이 부분을 어떻게 처리해야되는지 조언좀 부탁드릴게요 ^^;
:
: 소켓은 빌더에 있는 ServerSocket을 사용했습니다.

+ -

관련 글 리스트
41362 소켓에서 데이타전송시 질문입니다. 오전&오후 823 2005/08/08
41368     Re:소켓에서 데이타전송시 질문입니다. 유영인 Cuperido 1461 2005/08/08
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.