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
[11310] Re:[질문] 인디소켓에서 WriteBuffer()을 연달아 쓸때.. 고수님 제발 살려주세요. 저 죽어요.. -.-
화이트 [] 951 읽음    2001-09-20 22:39
박정만 님이 쓰신 글 :
: 인디 서버 소켓에서 Connection->WriteBuffer()를 연달아 2번 쓰면, 첫번째 보낸건 가는데, 두번째에 보낸건 안갑니다.
:
: 그런데, 한 번 더 WriteBuffer() 하면 두번째로 보낸것이 그때서야 도착하는 기현상이 생기더군요..
:
: 그러니깐.. Packet1과 Packet2를 동시에 연달아서 보낼때...
:
: WriteBuffer(&Packet1, sizeof(Packet1), false);  -> 클라이언트가 정상적으로 받음
: WriteBuffer(&Packet2, sizeof(Packet2), false);  -> 클라이언트가 받지 못함
:
: 나중에 Packet3를 보낼때..
: WriteBuffer(&Packet3, sizeof(Packet3), false);  -> 아까 받지 못한 Packet2가 도착,
:
: 또 나중에 Packet4를 보내면, 바로 전에 안왔던 Packet3가 도착하는 식이죠.. -.-
:
: 어떻게 해결하죠? 이것때문에 몇일동안 진도가 안나가고 있습니다.. 제발 살려주세요.. Y_Y

제가 인디콤포넌트는 한번도 안써봐서 잘모르겠지만

보통 소켓통신에선 패킷을 보낼때 먼저 소켓에 할당된 버퍼에 채워지고

그리고 나서 상대편으로 보내는데요 보내고나면 버퍼안에 있는 패킷의 지워집니다.

물론 아직 보내지 않았으면 버퍼안에 패킷이 남아 있지요.

버퍼안에 패킷이 남아 있을때는 다른패킷을 전송할려고 해도 전송할수가 없거든요.

아마도 이경우가 아닐까 생각이 드는데요.

추측컨데 인디콤퍼넌트안에서  전송에 실패하면 전송할려고 하는 패킷은 자기가 가지고 있는

버퍼에다 저장을 하고 다음번 전송명령을 보낼때 그 패킷을 보내는게 아닐까 생각이 드는데요

그래서 지금 연속으로 패킷1,패킷2 를 보내지 말고

패킷1 을 보내고 난다음 약간의 delay 를 주고 패킷이 보내지길 기다린다음에 패키2를

한번 보내보세요 ,

이래도 안되면 내가 위에쓴 글은 다 잇어버리세요 ^^


+ -

관련 글 리스트
11308 [질문] 인디소켓에서 WriteBuffer()을 연달아 쓸때.. 고수님 제발 살려주세요. 저 죽어요.. -.- 박정만 905 2001/09/20
11310     Re:[질문] 인디소켓에서 WriteBuffer()을 연달아 쓸때.. 고수님 제발 살려주세요. 저 죽어요.. -.- 화이트 951 2001/09/20
11313         Re:Re:[질문] 인디소켓에서 WriteBuffer()을 연달아 쓸때.. 고수님 제발 살려주세요. 저 죽어요.. -.- 최보현.U&I 1040 2001/09/21
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.