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
[16167] Re:소켓의 recv()에 대해서.
.으.라.차.차. [baepower] 1234 읽음    2002-03-10 20:44
모라 님이 쓰신 글 :
: 어 이거 질문을 올렸는데..지워진거 같군요.(왜지..?^^;)
:
: recv(int s, void *buf, size_t len, int flags);
:
: recv함수로 자료를 받을시 공간 할당을 해야하지 않나요?
:
: 저번 질문에 2기가도 받을 수 있다고 했는데...패킷 받을시 void *buf를
:
: 포인터로 받음 되겠지만, size_t len의 문제는 어떻하죠?
:
: 그냥 포인터 그 자체만 공간 할당하면 되는건가...
:
: 좋은 답변 바랍니다.
:
:
:
: ps winsock으로 자료 전송 구현한거 찿아요~


TClientWinSocket에서 다음 2가지의 메쏘드가 있습니다.(주로 쓰이는..아니 내가 주로쓰는..)

AnsiString __fastcall ReceiveText();
int __fastcall ReceiveBuf(void *Buf, int Count);

첫번째꺼는 AnsiString으로 결과를 저장하는 역할을 합니다. 헌데 이건 지금 씨빌더의 TClientSocket의 버그로 인하여 대량의 데이터를 저장 못합니다. 한번에 8000바이트도 못읽습니다.
그래서 소량의 데이타를 받을때 사용하시구요.. 개인적으로는 AnsiString을 다루는게 포인터 다루는
것보다 간단하기에 이걸 사용합니다.

두번째, Count사이즈 만큼 읽어서 *Buf에 저장합니다. 이는 Buf의 사이즈를 미리 정해놔야 하는
안좋은 점이 있지만 대량의 데이터를 받아서 저장할 수 있습니다.

답변이 됐는지 모르겠네요..

헌데 질문하신 recv(int s, void *buf, size_t len, int flags); 이건 뭘 말하는건지 잘 모르겠네요..
어떤 메쏘드인지...??



+ -

관련 글 리스트
16163 소켓의 recv()에 대해서. 모라 1013 2002/03/10
16177     Re:소켓의 recv()에 대해서. 이경문 1181 2002/03/11
16173     Re:소켓의 recv()에 대해서. Julien 1144 2002/03/11
16174         Re:Re:소켓의 recv()에 대해서. 모라 1063 2002/03/11
16215             Re:Re:Re:소켓의 recv()에 대해서. Julien 1091 2002/03/11
16167     Re:소켓의 recv()에 대해서. .으.라.차.차. 1234 2002/03/10
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.