2009. 8. 31. 10:37ㆍ언어/C++ Builder
Borland Socket 메시지 발송.
SendText | 잠재적인 문제점을 가진다. |
SendBuf |
SendBuf = 정수형의 Return 값이 돌아온다.
Send()함수를 호출하여 받는 리턴 값이 실제로 데이터를 송신하고 리턴 받는 값이라고 생각하면 안 된다.
Send()함수의 기능은 Socket의 Send Buffer로 집어 넣는걸로 끝난다. 이후의 일은 TCP에서 관리.
수신
ReceiveText | 버퍼에서 데이터를 가지고 오면 버퍼에 있는 데이터를 삭제 |
ReceiveBuf |
ReceiveBuf = 수신된 Data의 길이를 알아내야 한다. -> ReceiveLength라는 멤버함수를 사용하면 수신된 사이즈를 알 수 있다.
데이터를 가져오고 싶을 때
Int nSize = Socket->ReceiveLength();
Char * pBuffer = new char[nSize+1];
Memset(pBuffer, 0, nSize+1);
::Recv(Socket->Handle, pBuffer, nSize, MSG_PEEK);
OnRead에서 버퍼에 있는 데이터를 가져가지 않으면 무한 루프를 돌 듯 계속해서 OnRead이벤트가 발생 그러므로 버퍼에 있는 데이터는 즉시 가져와서 Application에 저장해서 쓰는 것이 좋다.
TserverSocket -> 클라에서 오는 error메시지를 TserverSocket의 OnClientError 에서 수신 받을 수 있다.
OnClientError 이벤트가 발생할 때 넘어오는 파라메터
Socket : TcustomWinSocket -> 문제가 발생한 소켓의 포인터.
ErrorEvent : TerrorEvent -> 문제가 발생한 작업.
Var ErrorCode : Integer -> GetLastError를 이용한 에러코드
'언어 > C++ Builder' 카테고리의 다른 글
쓰레드를 이용한 채팅 서버 만들기. (0) | 2009.09.04 |
---|---|
C++ Builder Component 설치 하기. (0) | 2009.09.01 |
컴포넌트 만들기..ㅣ 속성, 메소드, 이벤트 (0) | 2009.08.19 |
C++ Builder 의 C++언어 확장 (0) | 2009.08.19 |
C++ Builder 기초 (0) | 2009.08.19 |